{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# # Rental Listing Inquiries分类\n",
    " \n",
    " 利用 Logistic 回归和 SVM分类计数实现 Rental Listing Inquiries 数据的感兴趣程 度预测。 \n",
    " \n",
    "1. 对数据做数据探索分析 \n",
    "2. 适当的数据清洗（异常值处理） \n",
    "3. 适当的特征工程 \n",
    "4. 用 Logistic 回归模型对公寓感兴趣程度进行预测，注意正则超参数的调优。\n",
    "5. 用 RBF 的 SVM对公寓感兴趣程度进行预测，注意正则超参数和核函数参数 的调优"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. 导入相关数据包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 首先 import 必要的模块\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "# 载入库包\n",
    "from sklearn.linear_model import LogisticRegression  \n",
    "from sklearn.model_selection import GridSearchCV  \n",
    "from sklearn.metrics import classification_report \n",
    "from sklearn import preprocessing\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "#竞赛的评价指标为logloss\n",
    "from sklearn.metrics import log_loss  \n",
    "from sklearn import metrics\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.编写相应的函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "#用于画散点图\n",
    "def plotScatterPic(dataFrame,name):\n",
    "    plt.scatter(range(dataFrame.shape[0]), dataFrame[name].values,color='purple')\n",
    "    plt.title(\"Distribution of \"+name);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "#用于画数值型的分布图\n",
    "def plotCountPic(dataFrame,name,lOrder=[],xLabel=\"\",yLabel=\"\"):\n",
    "    if len(lOrder)>0:\n",
    "        sns.countplot(dataFrame[name], order=lOrder);\n",
    "    else:\n",
    "        sns.countplot(dataFrame[name])\n",
    "    \n",
    "    if xLabel != \"\":\n",
    "        plt.xlabel(xLabel);\n",
    "    if yLabel != \"\":\n",
    "        plt.ylabel(yLabel);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "#用于画直方图\n",
    "def plotHistogramPic(dataFrame,name):\n",
    "    sns.distplot(train[name].values, bins=50, kde=True)\n",
    "    plt.xlabel(name, fontsize=12)\n",
    "    plt.ylabel(\"Probability\")\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "#用于对经纬度缺失值进行填充\n",
    "def fillLatLongValue(dataFrame,totalFrame):\n",
    "    streetAddr =dataFrame[dataFrame[\"latitude\"] == 0].street_address\n",
    "    for val in streetAddr:\n",
    "        #第一部分解可以查到具体位置的数据的值\n",
    "        d = totalFrame.loc[(totalFrame.street_address == val) & (totalFrame.latitude != 0.0),'latitude'].values\n",
    "        l = totalFrame.loc[(totalFrame.street_address == val) & (totalFrame.longitude != 0.0),'longitude'].values\n",
    "        if len(d) > 0:\n",
    "            dnum = d[0]\n",
    "            lnum = l[0]\n",
    "            dataFrame.ix[(dataFrame.street_address == val) & (dataFrame.latitude == 0.0),'latitude'] =  dnum\n",
    "            dataFrame.ix[(dataFrame.street_address == val) & (dataFrame.longitude == 0.0),'longitude'] = lnum\n",
    "            continue\n",
    "        #第二部分解决不能查到具体位置的数据的值，但能查到相应街区的位置\n",
    "        lat1 = totalFrame.loc[totalFrame['street_address'].str.contains(val)&totalFrame['latitude']!= 0.0,\"latitude\"].values\n",
    "        lon1 = totalFrame.loc[totalFrame['street_address'].str.contains(val)&totalFrame['longitude']!= 0.0,\"longitude\"].values\n",
    "        if len(lat1) != 0 and len(lon1) !=0:\n",
    "            lat1Mean = lat1.mean()\n",
    "            lon1Mean = lon1.mean()\n",
    "            dataFrame.ix[(dataFrame.street_address == val) & (dataFrame.latitude == 0.0),'latitude'] =  lat1Mean\n",
    "            dataFrame.ix[(dataFrame.street_address == val) & (dataFrame.longitude == 0.0),'longitude'] =  lon1Mean\n",
    "            continue\n",
    "        #第三部分剩下的缺失值就按整体中位数填写\n",
    "        dataFrame.ix[(dataFrame.street_address == val) & (dataFrame.latitude == 0.0),'latitude'] = dataFrame['latitude'].median()\n",
    "        dataFrame.ix[(dataFrame.street_address == val) & (dataFrame.longitude == 0.0),'longitude'] = dataFrame['longitude'].median()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "#按照分离manager 区间化\n",
    "def proceess_manager_id(df):\n",
    "    managers_count = df['manager_id'].value_counts()\n",
    "\n",
    "    df['top_10_manager'] = df['manager_id'].apply(lambda x: 1 if x in managers_count.index.values[\n",
    "        managers_count.values >= np.percentile(managers_count.values, 90)] else 0)\n",
    "    df['top_25_manager'] = df['manager_id'].apply(lambda x: 1 if x in managers_count.index.values[\n",
    "        managers_count.values >= np.percentile(managers_count.values, 75)] else 0)\n",
    "    df['top_5_manager'] = df['manager_id'].apply(lambda x: 1 if x in managers_count.index.values[\n",
    "        managers_count.values >= np.percentile(managers_count.values, 95)] else 0)\n",
    "    df['top_50_manager'] = df['manager_id'].apply(lambda x: 1 if x in managers_count.index.values[\n",
    "        managers_count.values >= np.percentile(managers_count.values, 50)] else 0)\n",
    "    df['top_1_manager'] = df['manager_id'].apply(lambda x: 1 if x in managers_count.index.values[\n",
    "        managers_count.values >= np.percentile(managers_count.values, 99)] else 0)\n",
    "    df['top_2_manager'] = df['manager_id'].apply(lambda x: 1 if x in managers_count.index.values[\n",
    "        managers_count.values >= np.percentile(managers_count.values, 98)] else 0)\n",
    "    df['top_15_manager'] = df['manager_id'].apply(lambda x: 1 if x in managers_count.index.values[\n",
    "        managers_count.values >= np.percentile(managers_count.values, 85)] else 0)\n",
    "    df['top_20_manager'] = df['manager_id'].apply(lambda x: 1 if x in managers_count.index.values[\n",
    "        managers_count.values >= np.percentile(managers_count.values, 80)] else 0)\n",
    "    df['top_30_manager'] = df['manager_id'].apply(lambda x: 1 if x in managers_count.index.values[\n",
    "        managers_count.values >= np.percentile(managers_count.values, 70)] else 0)\n",
    "    \n",
    "    df.drop(['manager_id'], axis=1,inplace = True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.读入数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>building_id</th>\n",
       "      <th>created</th>\n",
       "      <th>description</th>\n",
       "      <th>display_address</th>\n",
       "      <th>features</th>\n",
       "      <th>interest_level</th>\n",
       "      <th>latitude</th>\n",
       "      <th>listing_id</th>\n",
       "      <th>longitude</th>\n",
       "      <th>manager_id</th>\n",
       "      <th>photos</th>\n",
       "      <th>price</th>\n",
       "      <th>street_address</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>53a5b119ba8f7b61d4e010512e0dfc85</td>\n",
       "      <td>2016-06-24 07:54:24</td>\n",
       "      <td>A Brand New 3 Bedroom 1.5 bath ApartmentEnjoy ...</td>\n",
       "      <td>Metropolitan Avenue</td>\n",
       "      <td>[]</td>\n",
       "      <td>medium</td>\n",
       "      <td>40.7145</td>\n",
       "      <td>7211212</td>\n",
       "      <td>-73.9425</td>\n",
       "      <td>5ba989232d0489da1b5f2c45f6688adc</td>\n",
       "      <td>[https://photos.renthop.com/2/7211212_1ed4542e...</td>\n",
       "      <td>3000</td>\n",
       "      <td>792 Metropolitan Avenue</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10000</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>c5c8a357cba207596b04d1afd1e4f130</td>\n",
       "      <td>2016-06-12 12:19:27</td>\n",
       "      <td></td>\n",
       "      <td>Columbus Avenue</td>\n",
       "      <td>[Doorman, Elevator, Fitness Center, Cats Allow...</td>\n",
       "      <td>low</td>\n",
       "      <td>40.7947</td>\n",
       "      <td>7150865</td>\n",
       "      <td>-73.9667</td>\n",
       "      <td>7533621a882f71e25173b27e3139d83d</td>\n",
       "      <td>[https://photos.renthop.com/2/7150865_be3306c5...</td>\n",
       "      <td>5465</td>\n",
       "      <td>808 Columbus Avenue</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>100004</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>c3ba40552e2120b0acfc3cb5730bb2aa</td>\n",
       "      <td>2016-04-17 03:26:41</td>\n",
       "      <td>Top Top West Village location, beautiful Pre-w...</td>\n",
       "      <td>W 13 Street</td>\n",
       "      <td>[Laundry In Building, Dishwasher, Hardwood Flo...</td>\n",
       "      <td>high</td>\n",
       "      <td>40.7388</td>\n",
       "      <td>6887163</td>\n",
       "      <td>-74.0018</td>\n",
       "      <td>d9039c43983f6e564b1482b273bd7b01</td>\n",
       "      <td>[https://photos.renthop.com/2/6887163_de85c427...</td>\n",
       "      <td>2850</td>\n",
       "      <td>241 W 13 Street</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>100007</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>28d9ad350afeaab8027513a3e52ac8d5</td>\n",
       "      <td>2016-04-18 02:22:02</td>\n",
       "      <td>Building Amenities - Garage - Garden - fitness...</td>\n",
       "      <td>East 49th Street</td>\n",
       "      <td>[Hardwood Floors, No Fee]</td>\n",
       "      <td>low</td>\n",
       "      <td>40.7539</td>\n",
       "      <td>6888711</td>\n",
       "      <td>-73.9677</td>\n",
       "      <td>1067e078446a7897d2da493d2f741316</td>\n",
       "      <td>[https://photos.renthop.com/2/6888711_6e660cee...</td>\n",
       "      <td>3275</td>\n",
       "      <td>333 East 49th Street</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>100013</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-04-28 01:32:41</td>\n",
       "      <td>Beautifully renovated 3 bedroom flex 4 bedroom...</td>\n",
       "      <td>West 143rd Street</td>\n",
       "      <td>[Pre-War]</td>\n",
       "      <td>low</td>\n",
       "      <td>40.8241</td>\n",
       "      <td>6934781</td>\n",
       "      <td>-73.9493</td>\n",
       "      <td>98e13ad4b495b9613cef886d79a6291f</td>\n",
       "      <td>[https://photos.renthop.com/2/6934781_1fa4b41a...</td>\n",
       "      <td>3350</td>\n",
       "      <td>500 West 143rd Street</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        bathrooms  bedrooms                       building_id  \\\n",
       "10            1.5         3  53a5b119ba8f7b61d4e010512e0dfc85   \n",
       "10000         1.0         2  c5c8a357cba207596b04d1afd1e4f130   \n",
       "100004        1.0         1  c3ba40552e2120b0acfc3cb5730bb2aa   \n",
       "100007        1.0         1  28d9ad350afeaab8027513a3e52ac8d5   \n",
       "100013        1.0         4                                 0   \n",
       "\n",
       "                    created  \\\n",
       "10      2016-06-24 07:54:24   \n",
       "10000   2016-06-12 12:19:27   \n",
       "100004  2016-04-17 03:26:41   \n",
       "100007  2016-04-18 02:22:02   \n",
       "100013  2016-04-28 01:32:41   \n",
       "\n",
       "                                              description  \\\n",
       "10      A Brand New 3 Bedroom 1.5 bath ApartmentEnjoy ...   \n",
       "10000                                                       \n",
       "100004  Top Top West Village location, beautiful Pre-w...   \n",
       "100007  Building Amenities - Garage - Garden - fitness...   \n",
       "100013  Beautifully renovated 3 bedroom flex 4 bedroom...   \n",
       "\n",
       "            display_address  \\\n",
       "10      Metropolitan Avenue   \n",
       "10000       Columbus Avenue   \n",
       "100004          W 13 Street   \n",
       "100007     East 49th Street   \n",
       "100013    West 143rd Street   \n",
       "\n",
       "                                                 features interest_level  \\\n",
       "10                                                     []         medium   \n",
       "10000   [Doorman, Elevator, Fitness Center, Cats Allow...            low   \n",
       "100004  [Laundry In Building, Dishwasher, Hardwood Flo...           high   \n",
       "100007                          [Hardwood Floors, No Fee]            low   \n",
       "100013                                          [Pre-War]            low   \n",
       "\n",
       "        latitude  listing_id  longitude                        manager_id  \\\n",
       "10       40.7145     7211212   -73.9425  5ba989232d0489da1b5f2c45f6688adc   \n",
       "10000    40.7947     7150865   -73.9667  7533621a882f71e25173b27e3139d83d   \n",
       "100004   40.7388     6887163   -74.0018  d9039c43983f6e564b1482b273bd7b01   \n",
       "100007   40.7539     6888711   -73.9677  1067e078446a7897d2da493d2f741316   \n",
       "100013   40.8241     6934781   -73.9493  98e13ad4b495b9613cef886d79a6291f   \n",
       "\n",
       "                                                   photos  price  \\\n",
       "10      [https://photos.renthop.com/2/7211212_1ed4542e...   3000   \n",
       "10000   [https://photos.renthop.com/2/7150865_be3306c5...   5465   \n",
       "100004  [https://photos.renthop.com/2/6887163_de85c427...   2850   \n",
       "100007  [https://photos.renthop.com/2/6888711_6e660cee...   3275   \n",
       "100013  [https://photos.renthop.com/2/6934781_1fa4b41a...   3350   \n",
       "\n",
       "                 street_address  \n",
       "10      792 Metropolitan Avenue  \n",
       "10000       808 Columbus Avenue  \n",
       "100004          241 W 13 Street  \n",
       "100007     333 East 49th Street  \n",
       "100013    500 West 143rd Street  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 读取数据\n",
    "# path to where the data lies\n",
    "train = pd.read_json(\"./rentalList/RentListingInquries_train.json\")\n",
    "test = pd.read_json(\"./rentalList/RentListingInquries_test.json\")\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.数据探索及噪声处理、空值填补"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(49352, 15)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 49352 entries, 10 to 99994\n",
      "Data columns (total 15 columns):\n",
      "bathrooms          49352 non-null float64\n",
      "bedrooms           49352 non-null int64\n",
      "building_id        49352 non-null object\n",
      "created            49352 non-null object\n",
      "description        49352 non-null object\n",
      "display_address    49352 non-null object\n",
      "features           49352 non-null object\n",
      "interest_level     49352 non-null object\n",
      "latitude           49352 non-null float64\n",
      "listing_id         49352 non-null int64\n",
      "longitude          49352 non-null float64\n",
      "manager_id         49352 non-null object\n",
      "photos             49352 non-null object\n",
      "price              49352 non-null int64\n",
      "street_address     49352 non-null object\n",
      "dtypes: float64(3), int64(3), object(9)\n",
      "memory usage: 6.0+ MB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "一共近五万条数据，14个属性，1个目标分类，没有缺失值，但是中间的数据可能有0值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "bathrooms          0\n",
       "bedrooms           0\n",
       "building_id        0\n",
       "created            0\n",
       "description        0\n",
       "display_address    0\n",
       "features           0\n",
       "interest_level     0\n",
       "latitude           0\n",
       "listing_id         0\n",
       "longitude          0\n",
       "manager_id         0\n",
       "photos             0\n",
       "price              0\n",
       "street_address     0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>latitude</th>\n",
       "      <th>listing_id</th>\n",
       "      <th>longitude</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>49352.00000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>4.935200e+04</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>4.935200e+04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.21218</td>\n",
       "      <td>1.541640</td>\n",
       "      <td>40.741545</td>\n",
       "      <td>7.024055e+06</td>\n",
       "      <td>-73.955716</td>\n",
       "      <td>3.830174e+03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.50142</td>\n",
       "      <td>1.115018</td>\n",
       "      <td>0.638535</td>\n",
       "      <td>1.262746e+05</td>\n",
       "      <td>1.177912</td>\n",
       "      <td>2.206687e+04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.811957e+06</td>\n",
       "      <td>-118.271000</td>\n",
       "      <td>4.300000e+01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.00000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>40.728300</td>\n",
       "      <td>6.915888e+06</td>\n",
       "      <td>-73.991700</td>\n",
       "      <td>2.500000e+03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.00000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>40.751800</td>\n",
       "      <td>7.021070e+06</td>\n",
       "      <td>-73.977900</td>\n",
       "      <td>3.150000e+03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.00000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>40.774300</td>\n",
       "      <td>7.128733e+06</td>\n",
       "      <td>-73.954800</td>\n",
       "      <td>4.100000e+03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>10.00000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>44.883500</td>\n",
       "      <td>7.753784e+06</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.490000e+06</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         bathrooms      bedrooms      latitude    listing_id     longitude  \\\n",
       "count  49352.00000  49352.000000  49352.000000  4.935200e+04  49352.000000   \n",
       "mean       1.21218      1.541640     40.741545  7.024055e+06    -73.955716   \n",
       "std        0.50142      1.115018      0.638535  1.262746e+05      1.177912   \n",
       "min        0.00000      0.000000      0.000000  6.811957e+06   -118.271000   \n",
       "25%        1.00000      1.000000     40.728300  6.915888e+06    -73.991700   \n",
       "50%        1.00000      1.000000     40.751800  7.021070e+06    -73.977900   \n",
       "75%        1.00000      2.000000     40.774300  7.128733e+06    -73.954800   \n",
       "max       10.00000      8.000000     44.883500  7.753784e+06      0.000000   \n",
       "\n",
       "              price  \n",
       "count  4.935200e+04  \n",
       "mean   3.830174e+03  \n",
       "std    2.206687e+04  \n",
       "min    4.300000e+01  \n",
       "25%    2.500000e+03  \n",
       "50%    3.150000e+03  \n",
       "75%    4.100000e+03  \n",
       "max    4.490000e+06  "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "数值型的特征一共有6个,bathrooms bedrooms latitude longitude listing_id price"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.1 单变量分析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(1) 卫浴室"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2adac3c8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(range(train.shape[0]), train[\"bathrooms\"].values,color='purple')\n",
    "plt.title(\"Distribution of bathrooms\");"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x4079abe0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plotCountPic(train,'bathrooms',[],\"Number of Bathrooms\",\"Number of occurrences\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\pandas\\core\\indexing.py:194: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  self._setitem_with_indexer(indexer, value)\n"
     ]
    }
   ],
   "source": [
    "ulimit = np.percentile(train.bathrooms.values, 99.5)\n",
    "train['bathrooms'].loc[train['bathrooms']>ulimit] = ulimit"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对于卫生间来说，在一个房子里面有10个不可思议，应该是噪声点，去除掉"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(2) 感兴趣程度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZUAAAEKCAYAAADaa8itAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAHRVJREFUeJzt3Xu0XWV97vHvQyCAaE2QDSNNoEFNq4gaJUIQaxVpCNgSpKBwqKTIMOoBheHlCJ4WlEurtUqLRzjFYyRYDyEiSNRgjMhFUC4BQiBcRmJAiaQQDFc5hhKe88d8N6xsVvae7My1F4s8nzHWWHP+5jvn+q0syC9zvu98p2wTERHRhC26nUBERLx0pKhERERjUlQiIqIxKSoREdGYFJWIiGhMikpERDQmRSUiIhqTohIREY1JUYmIiMZs2e0ERtoOO+zgiRMndjuNiIiectNNNz1ku2+odptdUZk4cSKLFy/udhoRET1F0q/rtMvlr4iIaEzHioqkbSTdIOlWScskfaHEz5N0j6Ql5TW5xCXpLEkrJC2V9NaWY82UtLy8ZrbE95B0W9nnLEnq1PeJiIihdfLy1zpgX9tPSNoKuEbSZWXbZ2xfNKD9AcCk8toLOAfYS9L2wCnAFMDATZLm2364tJkFXAcsAKYDlxEREV3RsTMVV54oq1uV12Dz7M8Azi/7XQeMkTQO2B9YZHttKSSLgOll2x/Z/qWr+fvPBw7u1PeJiIihdbRPRdIoSUuAB6kKw/Vl0xnlEteZkrYusfHAfS27ryqxweKr2sTb5TFL0mJJi9esWbPJ3ysiItrraFGxvd72ZGACsKek3YGTgNcBbwO2Bz5bmrfrD/Ew4u3yONf2FNtT+vqGHBEXERHDNCKjv2w/AlwJTLe9ulziWgd8C9izNFsF7Nyy2wTg/iHiE9rEIyKiSzo5+qtP0piyvC2wH3BX6QuhjNQ6GLi97DIfOKqMApsKPGp7NbAQmCZprKSxwDRgYdn2uKSp5VhHAZd26vtERMTQOjn6axwwR9IoquI1z/YPJf1MUh/V5aslwEdL+wXAgcAK4EngaADbayWdBtxY2p1qe21Z/hhwHrAt1aivjPyKiOgiVQOnNh9Tpkxx3Tvq9/jM+R3OJm768lHdTiEiapB0k+0pQ7XLHfUREdGYFJWIiGhMikpERDQmRSUiIhqTohIREY1JUYmIiMakqERERGNSVCIiojEpKhER0ZgUlYiIaEyKSkRENCZFJSIiGpOiEhERjUlRiYiIxqSoREREY1JUIiKiMSkqERHRmBSViIhoTIpKREQ0JkUlIiIak6ISERGN6VhRkbSNpBsk3SppmaQvlPiukq6XtFzShZJGl/jWZX1F2T6x5VgnlfjdkvZviU8vsRWSTuzUd4mIiHo6eaayDtjX9puBycB0SVOBLwFn2p4EPAwcU9ofAzxs+7XAmaUdknYDDgfeAEwHzpY0StIo4OvAAcBuwBGlbUREdEnHioorT5TVrcrLwL7ARSU+Bzi4LM8o65Tt75GkEp9re53te4AVwJ7ltcL2SttPAXNL24iI6JKO9qmUM4olwIPAIuBXwCO2ny5NVgHjy/J44D6Asv1R4FWt8QH7bCweERFd0tGiYnu97cnABKozi9e3a1betZFtLzT+PJJmSVosafGaNWuGTjwiIoZlREZ/2X4EuBKYCoyRtGXZNAG4vyyvAnYGKNtfCaxtjQ/YZ2Pxdp9/ru0ptqf09fU18ZUiIqKNTo7+6pM0pixvC+wH3AlcARxams0ELi3L88s6ZfvPbLvEDy+jw3YFJgE3ADcCk8postFUnfnzO/V9IiJiaFsO3WTYxgFzyiitLYB5tn8o6Q5grqTTgVuAb5b23wS+LWkF1RnK4QC2l0maB9wBPA0ca3s9gKTjgIXAKGC27WUd/D4RETGEjhUV20uBt7SJr6TqXxkY/wNw2EaOdQZwRpv4AmDBJicbERGNyB31ERHRmBSViIhoTIpKREQ0JkUlIiIak6ISERGNSVGJiIjGpKhERERjUlQiIqIxKSoREdGYFJWIiGjMkEVF0naStijLfyrpIElbdT61iIjoNXXOVK4GtpE0HrgcOBo4r5NJRUREb6pTVGT7SeAQ4Gu230f1TPiIiIgN1CoqkvYGjgR+VGKdnDI/IiJ6VJ2icgJwEnBJebbJq6ketBUREbGBIc84bF8FXCVpu7K+EvhEpxOLiIjeU2f0197laY13lvU3Szq745lFRETPqXP561+B/YHfAdi+FXhnJ5OKiIjeVOvmR9v3DQit70AuERHR4+qM4rpP0tsBSxpN1Z9yZ2fTioiIXlTnTOWjwLHAeGAVMLmsR0REbGDIomL7IdtH2t7J9o62/9b274baT9LOkq6QdKekZZKOL/HPS/qtpCXldWDLPidJWiHpbkn7t8Snl9gKSSe2xHeVdL2k5ZIuLGdSERHRJXVGf82RNKZlfayk2TWO/TTwKduvB6YCx0rqvxP/TNuTy2tBOe5uwOHAG4DpwNmSRkkaBXwdOIDqTv4jWo7zpXKsScDDwDE18oqIiA6pc/nrTbYf6V+x/TDwlqF2sr3a9s1l+XGqfpjxg+wyA5hre53te4AVwJ7ltcL2SttPAXOBGZIE7AtcVPafAxxc4/tERESH1CkqW0ga278iaXte4DQtkiZSFaLrS+g4SUslzW459nigdZTZqhLbWPxVwCO2nx4Qj4iILqlTVL4C/ELSaZJOA34B/HPdD5D0cuB7wAm2HwPOAV5D1eG/uhwfQG129zDi7XKYJWmxpMVr1qypm3pERLxAdTrqzwcOBR4AHgQOsf3tOgcvz135HvAd2xeX4z1ge73tZ4BvUF3egupMY+eW3ScA9w8SfwgYI2nLAfF23+Fc21NsT+nr66uTekREDEPdJz/eBVwMXAo8IWmXoXYofR7fBO60/dWW+LiWZu8Dbi/L84HDJW0taVdgEnADcCMwqYz0Gk3VmT/ftqkmtjy07D+z5BcREV0yZN+IpI8Dp1Cdqaynuuxk4E1D7LoP8EHgNklLSuxzVKO3Jpdj3At8BKDMgDwPuINq5NixtteXHI4DFgKjgNm2l5XjfRaYK+l04BaqIhYREV1Sp8P9eODP6tyb0sr2NbTv91gwyD5nAGe0iS9ot1+ZMXnPgfGIiOiOOpe/7gMe7XQiERHR++qcqawErpT0I2Bdf7C1nyQiIgLqFZXflNfo8oqIiGirzpMfvwAgaTvbv+98ShER0avy5MeIiGhMnvwYERGNyZMfIyKiMXnyY0RENCZPfoyIiMYMeqZSHpD1QdtHjlA+ERHRwwY9Uylzb80YoVwiIqLH1elTuVbS/wIuBJ69T6X/qY4RERH96hSVt5f3U1tipnqUb0RExLOG6lPZAjjH9rwRyiciInrYUH0qzwDHjVAuERHR4+oMKV4k6dOSdpa0ff+r45lFRETPqdOn8qHy3npvioFXN59ORET0sjqzFO86EolERETvq/OM+qPaxW2f33w6ERHRy+pc/npby/I2wHuAm4EUlYiI2ECdy18fb12X9Erg2x3LKCIielatqe8HeBKYNFSjMlrsCkl3Slom6fgS317SIknLy/vYEpeksyStkLRU0ltbjjWztF8uaWZLfA9Jt5V9zpKkYXyfiIhoSJ0nP/5A0vzy+iFwN3BpjWM/DXzK9uuBqcCxknYDTgQutz0JuLysAxxAVawmAbOAc8rnbw+cAuwF7Amc0l+ISptZLftNr5FXRER0SJ0+lX9pWX4a+LXtVUPtZHs1sLosPy7pTqrp82cA7yrN5gBXAp8t8fNtG7hO0hhJ40rbRbbXAkhaBEyXdCXwR7Z/WeLnAwcDl9X4ThER0QF1ispvgNW2/wAgaVtJE23fW/dDJE0E3gJcD+xUCg62V0vasTQbD7Q+YXJViQ0WX9UmHhERXVKnT+W7wDMt6+tLrBZJLwe+B5xg+7HBmraJeRjxdjnMkrRY0uI1a9YMlXJERAxTnaKype2n+lfK8ug6B5e0FVVB+Y7ti0v4gXJZi/L+YImvAnZu2X0CcP8Q8Qlt4s9j+1zbU2xP6evrq5N6REQMQ52iskbSQf0rkmYADw21UxmJ9U3gTttfbdk0H+gfwTWT5zr95wNHlVFgU4FHy2WyhcA0SWNLB/00YGHZ9rikqeWzjqLeAIKIiOiQOn0qHwW+Ux7UBdUZQtu77AfYB/ggcJukJSX2OeCLwDxJx1D11xxWti0ADgRWUA1bPhrA9lpJpwE3lnan9nfaAx8DzgO2peqgTyd9REQX1bn58VfA1NI3ItuP1zmw7Wto3+8B1V35A9ubDSetbN02G5jdJr4Y2L1OPhER0Xl17lP5R0ljbD9RhgaPlXT6SCQXERG9pU6fygG2H+lfsf0w1WWqiIiIDdQpKqMkbd2/ImlbYOtB2kdExGaqTkf9fwCXS/oW1X0gH6K6Ez4iImIDdTrq/1nSUmC/EjrN9sLOphUREb2ozpkKwC3AVlRnKrd0Lp2IiOhldUZ/vR+4ATgUeD9wvaRDO51YRET0njpnKv8TeJvtBwEk9QE/BS7qZGIREdF76oz+2qK/oBS/q7lfRERsZuqcqfxY0kLggrL+AaopVSIiIjZQZ/TXZyQdAryDatqVc21f0vHMIiKi59Qa/VWmrb94yIYREbFZS99IREQ0JkUlIiIas9GiIuny8v6lkUsnIiJ62WB9KuMk/QVwkKS5DHg2iu2bO5pZRET0nMGKysnAiVTPfv/qgG0G9u1UUhER0Zs2WlRsXwRcJOkfbJ82gjlFRESPqnOfymmSDgLeWUJX2v5hZ9OKiIheVGdCyX8CjgfuKK/jSywiImIDdW5+fC8w2fYzAJLmUE1/f1InE4uIiN5T9z6VMS3Lr+xEIhER0fvqFJV/Am6RdF45S7kJ+MehdpI0W9KDkm5viX1e0m8lLSmvA1u2nSRphaS7Je3fEp9eYiskndgS31XS9ZKWS7pQ0ui6XzoiIjpjyKJi+wJgKtXcXxcDe9ueW+PY5wHT28TPtD25vBYASNoNOBx4Q9nnbEmjJI0Cvg4cAOwGHFHaAnypHGsS8DBwTI2cIiKig2pd/rK92vZ825fa/s+a+1wNrK2Zxwxgru11tu8BVgB7ltcK2yttPwXMBWZIEtV9Mv0PCpsDHFzzsyIiokO6MffXcZKWlstjY0tsPHBfS5tVJbax+KuAR2w/PSDelqRZkhZLWrxmzZqmvkdERAww0kXlHOA1wGRgNfCVElebth5GvC3b59qeYntKX1/fC8s4IiJqG7SoSNqitaN9U9l+wPb6Mjz5G1SXt6A609i5pekE4P5B4g8BYyRtOSAeERFdNGhRKX/53ypplyY+TNK4ltX3Af0Faz5wuKStJe0KTAJuAG4EJpWRXqOpOvPn2zZwBXBo2X8mcGkTOUZExPDVuflxHLBM0g3A7/uDtg8abCdJFwDvAnaQtAo4BXiXpMlUl6ruBT5SjrVM0jyqO/afBo61vb4c5zhgITAKmG17WfmIzwJzJZ1OdTPmN+t84YiI6Jw6ReULwzmw7SPahDf6F7/tM4Az2sQXAAvaxFfy3OWziIh4EagzoeRVkv4EmGT7p5JeRnXWEBERsYE6E0p+mOp+kH8vofHA9zuZVERE9KY6Q4qPBfYBHgOwvRzYsZNJRUREb6pTVNaVu9kBKMN4N3pPSEREbL7qFJWrJH0O2FbSXwLfBX7Q2bQiIqIX1SkqJwJrgNuohgAvAP6+k0lFRERvqjP665ky5f31VJe97i43H0ZERGxgyKIi6b3A/wZ+RTXn1q6SPmL7sk4nFxERvaXOzY9fAd5tewWApNcAPwJSVCIiYgN1+lQe7C8oxUrgwQ7lExERPWyjZyqSDimLyyQtAOZR9akcRjXRY0RExAYGu/z11y3LDwB/UZbXAGOf3zwiIjZ3Gy0qto8eyUQiIqL31Rn9tSvwcWBia/uhpr6PiIjNT53RX9+nmrL+B8AznU0nIiJ6WZ2i8gfbZ3U8k4iI6Hl1isq/SToF+Amwrj9o++aOZRURET2pTlF5I/BBYF+eu/zlsh7xovSbU9/Y7RQ2C7ucfFu3U4gXmTpF5X3Aq1unv4+IiGinzh31twJjOp1IRET0vjpnKjsBd0m6kQ37VDKkOCIiNlCnqJwynANLmg38FdXcYbuX2PbAhVT3vNwLvN/2w5IE/BtwIPAk8Hf9AwEkzeS557ecbntOie8BnAdsS/WMl+MzJX9ERHcNefnL9lXtXjWOfR4wfUDsROBy25OAy8s6wAHApPKaBZwDzxahU4C9gD2BUyT1TxFzTmnbv9/Az4qIiBE2ZFGR9Likx8rrD5LWS3psqP1sXw2sHRCeAcwpy3OAg1vi57tyHTBG0jhgf2CR7bW2HwYWAdPLtj+y/ctydnJ+y7EiIqJL6jz58RWt65IOpjprGI6dbK8ux10taccSHw/c19JuVYkNFl/VJt6WpFlUZzXssssuw0w9IiKGUmf01wZsf5/m71FRu48aRrwt2+fanmJ7Sl9f3zBTjIiIodSZUPKQltUtgCkM8hf4EB6QNK6cpYzjuYd9rQJ2bmk3Abi/xN81IH5liU9o0z4iIrqozpnKX7e89gcep+oDGY75wMyyPBO4tCV+lCpTgUfLZbKFwDRJY0sH/TRgYdn2uKSpZeTYUS3HioiILqnTpzKs56pIuoDqLGMHSauoRnF9EZgn6RjgN1RPkYRqSPCBwAqqIcVHl89eK+k0nnvS5Km2+zv/P8ZzQ4ovK6+IiOiiwR4nfPIg+9n2aYMd2PYRG9n0nnYHA47dyHFmA7PbxBcDuw+WQ0REjKzBzlR+3ya2HXAM8Cpg0KISERGbn8EeJ/yV/mVJrwCOp7osNRf4ysb2i4iIzdegfSrljvZPAkdS3az41nITYkRExPMM1qfyZeAQ4FzgjbafGLGsIiKiJw02pPhTwB9TTeZ4f8tULY/XmaYlIiI2P4P1qbzgu+0jImLzlsIRERGNSVGJiIjGpKhERERjUlQiIqIxKSoREdGYFJWIiGhMikpERDQmRSUiIhqTohIREY1JUYmIiMakqERERGNSVCIiojEpKhER0ZgUlYiIaEyKSkRENKYrRUXSvZJuk7RE0uIS217SIknLy/vYEpeksyStkLRU0ltbjjOztF8uaWY3vktERDynm2cq77Y92faUsn4icLntScDlZR3gAGBSec0CzoGqCAGnAHsBewKn9BeiiIjojhfT5a8ZwJyyPAc4uCV+vivXAWMkjQP2BxbZXmv7YWARMH2kk46IiOd0q6gY+ImkmyTNKrGdbK8GKO87lvh44L6WfVeV2MbiERHRJRt9Rn2H7WP7fkk7Aosk3TVIW7WJeZD48w9QFa5ZALvssssLzTUiImrqypmK7fvL+4PAJVR9Ig+Uy1qU9wdL81XAzi27TwDuHyTe7vPOtT3F9pS+vr4mv0pERLQY8aIiaTtJr+hfBqYBtwPzgf4RXDOBS8vyfOCoMgpsKvBouTy2EJgmaWzpoJ9WYhER0SXduPy1E3CJpP7P/7+2fyzpRmCepGOA3wCHlfYLgAOBFcCTwNEAttdKOg24sbQ71fbakfsaEREx0IgXFdsrgTe3if8OeE+buIFjN3Ks2cDspnOMiIjheTENKY6IiB6XohIREY3p1pDiiIiN2udr+3Q7hZe8az9+bUeOmzOViIhoTIpKREQ0JkUlIiIak6ISERGNSVGJiIjGpKhERERjUlQiIqIxKSoREdGYFJWIiGhMikpERDQmRSUiIhqTohIREY1JUYmIiMakqERERGNSVCIiojEpKhER0ZgUlYiIaEyKSkRENKbni4qk6ZLulrRC0ondziciYnPW00VF0ijg68ABwG7AEZJ2625WERGbr54uKsCewArbK20/BcwFZnQ5p4iIzVavF5XxwH0t66tKLCIiumDLbiewidQm5uc1kmYBs8rqE5Lu7mhW3bUD8FC3k6hL/zKz2ym8mPTUbwfAKe3+F9xs9dTvp0+84N/uT+o06vWisgrYuWV9AnD/wEa2zwXOHamkuknSYttTup1HvHD57Xpbfr9Kr1/+uhGYJGlXSaOBw4H5Xc4pImKz1dNnKraflnQcsBAYBcy2vazLaUVEbLZ6uqgA2F4ALOh2Hi8im8Vlvpeo/Ha9Lb8fIPt5/doRERHD0ut9KhER8SKSotJjJD3R7RyieZKulDSlLC+QNKbbOUVF0kRJt7eJnyppvyH2/bykT3cuuxefnu9TiXipsX1gt3OIodk+uds5vBjlTKVHqfJlSbdLuk3SB0r8bEkHleVLJM0uy8dIOr2bOb/UlH/B3iXp/5Tf4TuS9pN0raTlkvaUtJ2k2ZJulHSLpBll320lzZW0VNKFwLYtx71X0g4D/4Us6dOSPl+Wr5R0pqSrJd0p6W2SLi6fm9+5eaMkfUPSMkk/Kb/feZIOBZB0YPlv4RpJZ0n6Ycu+u5Xfa6WkT3Qp/xGTM5XedQgwGXgz1Z28N0q6Grga+HOq+3XGA+NK+3dQzY0WzXotcBjVjA03Av+N6s/6IOBzwB3Az2x/qFzSukHST4GPAE/afpOkNwE3D+Ozn7L9TknHA5cCewBrgV9JOtP27zb1y8WzJgFH2P6wpHnA3/RvkLQN8O/AO23fI+mCAfu+Dng38Argbknn2P6vkUp8pOVMpXe9A7jA9nrbDwBXAW8Dfg78eZmt+Q7gAUnjgL2BX3Qt25eue2zfZvsZYBlwuashlbcBE4FpwImSlgBXAtsAuwDvBP4DwPZSYOkwPrv/Rt/bgGW2V9teB6xkw5kmYtPdY3tJWb6J6rft9zpgpe17yvrAovIj2+tsPwQ8COzU0Uy7LGcqvavtxD22fytpLDCd6qxle+D9wBO2Hx/B/DYX61qWn2lZf4bq/6/1wN/Y3mC+OUnQZp66AZ5mw3/4bbORz2793NbPjua0/vmup+VyJRv5f3GQfV/Sv03OVHrX1cAHJI2S1Ef1L98byrZfAieUNj8HPl3eY+QtBD6uUkUkvaXErwaOLLHdgTe12fcBYEdJr5K0NfBXI5BvvHB3Aa+WNLGsf6B7qXTfS7pivsRdQnVJ61aqf/H+D9v/Wbb9HJhme4WkX1OdraSodMdpwL8CS0thuZeqOJwDfEvSUmAJz/2D4Fm2/0vSqcD1wD1Uf3nFi4zt/yfpvwM/lvQQbX7LzUnuqI+I2ESSXm77ifIPh68Dy22f2e28uiGXvyIiNt2Hy2CMZcArqUaDbZZyphIREY3JmUpERDQmRSUiIhqTohIREY1JUYmg3uzPkk6Q9LIO5zFZUtsJJSW9a8CcUk1/9rNzWUUMV4pKRH0nAC+oqEga9QI/YzKQWYqjZ6WoRLQoZwNXSrqozDr7nTIj9CeAPwaukHRFaTtN0i8l3Szpu5JeXuL3SjpZ0jXAYZJeI+nHkm6S9HNJryvtDiuzG99aZhseDZxKNVPCkv6Zp2vkvIekq8rxF0oaJ+n1km5oaTOx3GjZtn2jf4ixWcsd9RHP9xbgDcD9wLXAPrbPkvRJ4N22H5K0A/D3wH62fy/ps8AnqYoCwB9svwNA0uXAR20vl7QXcDawL3AysH+Zr22M7acknQxMsX1cnUQlbQV8DZhhe00pRGeUWZFHS3q17ZVUU4fM21h74EOb/KcWQYpKRDs32F4FUG5omwhcM6DNVGA34NoyrddoqjnX+l1Y9n858Hbgu6UdwNbl/VrgvDKV+sXDzPXPgN2BReX4o4DVZds8qslEv0hVVD4wRPuITZaiEvF8dWaVFbDI9hEbOcbvy/sWwCO2Jw9sYPuj5czlvcASSc9rU4Oopr3fu822C6mK2cXVx3m5pDcO0j5ik6VPJaK+x6ketARwHbCPpNcCSHqZpD8duIPtx4B7JB1W2knSm8vya2xfXx5L+xDVM1BaP6OOu4E+SXuXY24l6Q3ls39FVRT/gXLmNFj7iCakqETUdy5wmaQrbK8B/g64oHSAX0f1sKZ2jgSOkXQr1dxQM0r8y6oeBX071VT4twJXUD1+dmMd9e+RtKr/RfW0x0OBL5XjL6G63NbvQuBvqS6FYfupIdpHbJLM/RUREY3JmUpERDQmRSUiIhqTohIREY1JUYmIiMakqERERGNSVCIiojEpKhER0ZgUlYiIaMz/B/SXAOEUwPeZAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x3d7ab400>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plotCountPic(train,'interest_level',['low','medium','high'],\"Interest Level\",\"Number of occurrences\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "train['interest'] = np.where(train.interest_level == 'low',0,np.where(train.interest_level == 'medium',1,2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "感兴趣低的房屋还是占大多数，中等有差不多12000，非常感兴趣的只有不到5000"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(3) 卧室"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x3d7abd68>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plotScatterPic(train,\"bedrooms\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x439d4208>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plotCountPic(train,'bedrooms',[],\"Number of Bedrooms\",\"Number of occurrences\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "卧室主要集中在0，1，2 三个数值上，不知道 0是缺失值还是没有的那种"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(4) 价格"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x44e160f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plotScatterPic(train,\"price\")\n",
    "ulimit = np.percentile(train.price.values, 99)\n",
    "train['price'].loc[train['price']>ulimit] = ulimit"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "价格存在明显地噪声点，应该去除掉"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xcb6d198>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plotHistogramPic(train,'price')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "处理完噪声点后发现价格明显 right skew 可以使用 log(x+1) 进行变换"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "train['price'] = np.log(train['price'])\n",
    "test['price'] = np.log(test['price'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x44facc18>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plotHistogramPic(train,'price')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "经过变换后图形挺像高斯分布，除了9以后的增加以外"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(5) 经纬度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x3daec940>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plotScatterPic(train,\"longitude\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2bb78550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plotScatterPic(train,\"latitude\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "经纬度含有0值，估计是没有填写造成的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "12\n",
      "27\n",
      "12\n",
      "27\n"
     ]
    }
   ],
   "source": [
    "print len(train.loc[(train.longitude == 0.0) & (train.latitude == 0.0)])\n",
    "print len(test.loc[(test.longitude == 0.0) & (test.latitude == 0.0)])\n",
    "print len(train.loc[train.longitude == 0.0])\n",
    "print len(test.loc[test.longitude == 0.0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "不管是训练集，还是测试集，经度为0的数据纬度也为0。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>building_id</th>\n",
       "      <th>created</th>\n",
       "      <th>description</th>\n",
       "      <th>display_address</th>\n",
       "      <th>features</th>\n",
       "      <th>interest_level</th>\n",
       "      <th>latitude</th>\n",
       "      <th>listing_id</th>\n",
       "      <th>longitude</th>\n",
       "      <th>manager_id</th>\n",
       "      <th>photos</th>\n",
       "      <th>price</th>\n",
       "      <th>street_address</th>\n",
       "      <th>interest</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "Empty DataFrame\n",
       "Columns: [bathrooms, bedrooms, building_id, created, description, display_address, features, interest_level, latitude, listing_id, longitude, manager_id, photos, price, street_address, interest]\n",
       "Index: []"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.loc[(train.street_address == \"\") & (train.latitude == 0.0)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>building_id</th>\n",
       "      <th>created</th>\n",
       "      <th>description</th>\n",
       "      <th>display_address</th>\n",
       "      <th>features</th>\n",
       "      <th>latitude</th>\n",
       "      <th>listing_id</th>\n",
       "      <th>longitude</th>\n",
       "      <th>manager_id</th>\n",
       "      <th>photos</th>\n",
       "      <th>price</th>\n",
       "      <th>street_address</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "Empty DataFrame\n",
       "Columns: [bathrooms, bedrooms, building_id, created, description, display_address, features, latitude, listing_id, longitude, manager_id, photos, price, street_address]\n",
       "Index: []"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.loc[(train.street_address == \"\") & (test.latitude == 0.0)]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "经纬度都为0，地址也为空的数据是不存在的。说明地址为空字符串的地方，经纬度都有值。不必考虑首先对地址和经纬度进行缺失值填补的顺序。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\ipykernel_launcher.py:24: DeprecationWarning: \n",
      ".ix is deprecated. Please use\n",
      ".loc for label based indexing or\n",
      ".iloc for positional indexing\n",
      "\n",
      "See the documentation here:\n",
      "http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated\n",
      "C:\\Anaconda\\lib\\site-packages\\ipykernel_launcher.py:11: DeprecationWarning: \n",
      ".ix is deprecated. Please use\n",
      ".loc for label based indexing or\n",
      ".iloc for positional indexing\n",
      "\n",
      "See the documentation here:\n",
      "http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated\n",
      "  # This is added back by InteractiveShellApp.init_path()\n"
     ]
    }
   ],
   "source": [
    "total = train.append(test)\n",
    "fillLatLongValue(train,total)\n",
    "fillLatLongValue(test,total)      "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n",
      "0\n",
      "0\n",
      "0\n"
     ]
    }
   ],
   "source": [
    "print len(train[train[\"latitude\"] == 0])\n",
    "print len(train[train[\"longitude\"] == 0])\n",
    "print len(test[test[\"latitude\"] == 0])\n",
    "print len(test[test[\"longitude\"] == 0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "经过函数填补后，经纬度都填写了相应的值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(6) 显示地址 和具体地址的操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "135\n",
      "10\n",
      "215\n",
      "13\n"
     ]
    }
   ],
   "source": [
    "print len(train[train['display_address'] == \"\"])\n",
    "print len(train[train['street_address'] == \"\"])\n",
    "print len(test[test['display_address'] == \"\"])\n",
    "print len(test[test['street_address'] == \"\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看出显示地址的空字符串比真实地址要多，经过观察发现显示地址就是真实地址的街道，所以可以考虑后面删除显示地址这个特征值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>building_id</th>\n",
       "      <th>created</th>\n",
       "      <th>description</th>\n",
       "      <th>display_address</th>\n",
       "      <th>features</th>\n",
       "      <th>interest_level</th>\n",
       "      <th>latitude</th>\n",
       "      <th>listing_id</th>\n",
       "      <th>longitude</th>\n",
       "      <th>manager_id</th>\n",
       "      <th>photos</th>\n",
       "      <th>price</th>\n",
       "      <th>street_address</th>\n",
       "      <th>interest</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>29164</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-06-12 01:47:57</td>\n",
       "      <td>GRAND one-bedroom apartment in charming buildi...</td>\n",
       "      <td></td>\n",
       "      <td>[]</td>\n",
       "      <td>high</td>\n",
       "      <td>40.7128</td>\n",
       "      <td>7144905</td>\n",
       "      <td>-74.0059</td>\n",
       "      <td>32396a0a600b721a4a7655d4ddcedc4d</td>\n",
       "      <td>[https://photos.renthop.com/2/7144905_678abac3...</td>\n",
       "      <td>7.435438</td>\n",
       "      <td></td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29296</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-06-12 00:35:40</td>\n",
       "      <td>MASSIVE one-bedroom apartment in charming buil...</td>\n",
       "      <td></td>\n",
       "      <td>[Laundry In Unit, Dishwasher]</td>\n",
       "      <td>low</td>\n",
       "      <td>40.7128</td>\n",
       "      <td>7144262</td>\n",
       "      <td>-74.0059</td>\n",
       "      <td>32396a0a600b721a4a7655d4ddcedc4d</td>\n",
       "      <td>[https://photos.renthop.com/2/7144262_af311fc8...</td>\n",
       "      <td>7.970740</td>\n",
       "      <td></td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43878</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-05-17 19:15:32</td>\n",
       "      <td>75th/Columbus - Great Value 1-bed: Elevator, P...</td>\n",
       "      <td></td>\n",
       "      <td>[Cats Allowed, Private Outdoor Space, Dogs All...</td>\n",
       "      <td>low</td>\n",
       "      <td>40.7128</td>\n",
       "      <td>7026692</td>\n",
       "      <td>-74.0059</td>\n",
       "      <td>1b431b2ef64b0b5ca12dfdf471770e93</td>\n",
       "      <td>[https://photos.renthop.com/2/7026692_d41c162a...</td>\n",
       "      <td>7.955074</td>\n",
       "      <td></td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47676</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-05-02 14:41:17</td>\n",
       "      <td>Located in the epicenter of Manhattan's most s...</td>\n",
       "      <td></td>\n",
       "      <td>[]</td>\n",
       "      <td>medium</td>\n",
       "      <td>40.7411</td>\n",
       "      <td>6954398</td>\n",
       "      <td>-74.0045</td>\n",
       "      <td>386235ddbe806fe9e99432be71e9f944</td>\n",
       "      <td>[https://photos.renthop.com/2/6954398_fc9bd345...</td>\n",
       "      <td>7.820038</td>\n",
       "      <td></td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>65816</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-05-06 20:37:27</td>\n",
       "      <td>Look no more this is by far one of New York Ci...</td>\n",
       "      <td></td>\n",
       "      <td>[Cats Allowed, Dogs Allowed, Doorman, Elevator...</td>\n",
       "      <td>low</td>\n",
       "      <td>40.7128</td>\n",
       "      <td>6976742</td>\n",
       "      <td>-74.0059</td>\n",
       "      <td>87149e6cd9da06cc299d8114fd421139</td>\n",
       "      <td>[https://photos.renthop.com/2/6976742_769e54bb...</td>\n",
       "      <td>7.997999</td>\n",
       "      <td></td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8530</th>\n",
       "      <td>2.0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-06-18 12:15:08</td>\n",
       "      <td>Beautiful &amp; Modern, Recently Renovated Apt in ...</td>\n",
       "      <td></td>\n",
       "      <td>[Laundry In Unit, No Fee]</td>\n",
       "      <td>low</td>\n",
       "      <td>40.7447</td>\n",
       "      <td>7181043</td>\n",
       "      <td>-73.9543</td>\n",
       "      <td>97c54832b0dfa7a4adcea98fe2a50240</td>\n",
       "      <td>[https://photos.renthop.com/2/7181043_350d631e...</td>\n",
       "      <td>8.433812</td>\n",
       "      <td></td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>85315</th>\n",
       "      <td>2.0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-04-24 15:33:36</td>\n",
       "      <td>UPGRADED! Corner 2 Bed conv 3, facing due west...</td>\n",
       "      <td></td>\n",
       "      <td>[Common Outdoor Space, Parking Space, No Fee, ...</td>\n",
       "      <td>high</td>\n",
       "      <td>40.7589</td>\n",
       "      <td>6920850</td>\n",
       "      <td>-73.9948</td>\n",
       "      <td>e9920062e07ee893c10e38d0259665b0</td>\n",
       "      <td>[https://photos.renthop.com/2/6920850_419d4030...</td>\n",
       "      <td>8.517193</td>\n",
       "      <td></td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8633</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-06-22 14:10:24</td>\n",
       "      <td>GREAT LOCATION ON THIS TRUE 1 BEDROOM IN MURRA...</td>\n",
       "      <td></td>\n",
       "      <td>[Elevator, Laundry In Building, ELEVATOR/LAUND...</td>\n",
       "      <td>low</td>\n",
       "      <td>40.7128</td>\n",
       "      <td>7201950</td>\n",
       "      <td>-74.0059</td>\n",
       "      <td>a4a468c229a6094d3811489361d08819</td>\n",
       "      <td>[https://photos.renthop.com/2/7201950_2d04c9c0...</td>\n",
       "      <td>7.803843</td>\n",
       "      <td></td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>93408</th>\n",
       "      <td>2.0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-04-10 12:35:23</td>\n",
       "      <td>A FABULOUS 4BR IN GRAMERCY!!\\r\\r PERFECT APART...</td>\n",
       "      <td>A FABULOUS 4BR IN GRAMERCY!!   PERFECT APARTME...</td>\n",
       "      <td>[Doorman, Elevator, Laundry In Building]</td>\n",
       "      <td>low</td>\n",
       "      <td>40.7128</td>\n",
       "      <td>6853904</td>\n",
       "      <td>-74.0059</td>\n",
       "      <td>4bdc3d8c1aaa90d997ce2cb77680679b</td>\n",
       "      <td>[https://photos.renthop.com/2/6853904_17c16d59...</td>\n",
       "      <td>8.817298</td>\n",
       "      <td></td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96402</th>\n",
       "      <td>2.0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-04-28 19:09:20</td>\n",
       "      <td>Amazing apartment with hardwood floors through...</td>\n",
       "      <td></td>\n",
       "      <td>[Common Outdoor Space, Cats Allowed, Dogs Allo...</td>\n",
       "      <td>medium</td>\n",
       "      <td>40.8500</td>\n",
       "      <td>6939113</td>\n",
       "      <td>-73.9219</td>\n",
       "      <td>aa2cc24e8243ac9cc6f25dbfb0619bb4</td>\n",
       "      <td>[https://photos.renthop.com/2/6939113_0c6f008c...</td>\n",
       "      <td>7.740664</td>\n",
       "      <td></td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       bathrooms  bedrooms building_id              created  \\\n",
       "29164        1.0         1           0  2016-06-12 01:47:57   \n",
       "29296        1.0         1           0  2016-06-12 00:35:40   \n",
       "43878        1.0         1           0  2016-05-17 19:15:32   \n",
       "47676        1.0         0           0  2016-05-02 14:41:17   \n",
       "65816        1.0         1           0  2016-05-06 20:37:27   \n",
       "8530         2.0         3           0  2016-06-18 12:15:08   \n",
       "85315        2.0         3           0  2016-04-24 15:33:36   \n",
       "8633         1.0         1           0  2016-06-22 14:10:24   \n",
       "93408        2.0         4           0  2016-04-10 12:35:23   \n",
       "96402        2.0         3           0  2016-04-28 19:09:20   \n",
       "\n",
       "                                             description  \\\n",
       "29164  GRAND one-bedroom apartment in charming buildi...   \n",
       "29296  MASSIVE one-bedroom apartment in charming buil...   \n",
       "43878  75th/Columbus - Great Value 1-bed: Elevator, P...   \n",
       "47676  Located in the epicenter of Manhattan's most s...   \n",
       "65816  Look no more this is by far one of New York Ci...   \n",
       "8530   Beautiful & Modern, Recently Renovated Apt in ...   \n",
       "85315  UPGRADED! Corner 2 Bed conv 3, facing due west...   \n",
       "8633   GREAT LOCATION ON THIS TRUE 1 BEDROOM IN MURRA...   \n",
       "93408  A FABULOUS 4BR IN GRAMERCY!!\\r\\r PERFECT APART...   \n",
       "96402  Amazing apartment with hardwood floors through...   \n",
       "\n",
       "                                         display_address  \\\n",
       "29164                                                      \n",
       "29296                                                      \n",
       "43878                                                      \n",
       "47676                                                      \n",
       "65816                                                      \n",
       "8530                                                       \n",
       "85315                                                      \n",
       "8633                                                       \n",
       "93408  A FABULOUS 4BR IN GRAMERCY!!   PERFECT APARTME...   \n",
       "96402                                                      \n",
       "\n",
       "                                                features interest_level  \\\n",
       "29164                                                 []           high   \n",
       "29296                      [Laundry In Unit, Dishwasher]            low   \n",
       "43878  [Cats Allowed, Private Outdoor Space, Dogs All...            low   \n",
       "47676                                                 []         medium   \n",
       "65816  [Cats Allowed, Dogs Allowed, Doorman, Elevator...            low   \n",
       "8530                           [Laundry In Unit, No Fee]            low   \n",
       "85315  [Common Outdoor Space, Parking Space, No Fee, ...           high   \n",
       "8633   [Elevator, Laundry In Building, ELEVATOR/LAUND...            low   \n",
       "93408           [Doorman, Elevator, Laundry In Building]            low   \n",
       "96402  [Common Outdoor Space, Cats Allowed, Dogs Allo...         medium   \n",
       "\n",
       "       latitude  listing_id  longitude                        manager_id  \\\n",
       "29164   40.7128     7144905   -74.0059  32396a0a600b721a4a7655d4ddcedc4d   \n",
       "29296   40.7128     7144262   -74.0059  32396a0a600b721a4a7655d4ddcedc4d   \n",
       "43878   40.7128     7026692   -74.0059  1b431b2ef64b0b5ca12dfdf471770e93   \n",
       "47676   40.7411     6954398   -74.0045  386235ddbe806fe9e99432be71e9f944   \n",
       "65816   40.7128     6976742   -74.0059  87149e6cd9da06cc299d8114fd421139   \n",
       "8530    40.7447     7181043   -73.9543  97c54832b0dfa7a4adcea98fe2a50240   \n",
       "85315   40.7589     6920850   -73.9948  e9920062e07ee893c10e38d0259665b0   \n",
       "8633    40.7128     7201950   -74.0059  a4a468c229a6094d3811489361d08819   \n",
       "93408   40.7128     6853904   -74.0059  4bdc3d8c1aaa90d997ce2cb77680679b   \n",
       "96402   40.8500     6939113   -73.9219  aa2cc24e8243ac9cc6f25dbfb0619bb4   \n",
       "\n",
       "                                                  photos     price  \\\n",
       "29164  [https://photos.renthop.com/2/7144905_678abac3...  7.435438   \n",
       "29296  [https://photos.renthop.com/2/7144262_af311fc8...  7.970740   \n",
       "43878  [https://photos.renthop.com/2/7026692_d41c162a...  7.955074   \n",
       "47676  [https://photos.renthop.com/2/6954398_fc9bd345...  7.820038   \n",
       "65816  [https://photos.renthop.com/2/6976742_769e54bb...  7.997999   \n",
       "8530   [https://photos.renthop.com/2/7181043_350d631e...  8.433812   \n",
       "85315  [https://photos.renthop.com/2/6920850_419d4030...  8.517193   \n",
       "8633   [https://photos.renthop.com/2/7201950_2d04c9c0...  7.803843   \n",
       "93408  [https://photos.renthop.com/2/6853904_17c16d59...  8.817298   \n",
       "96402  [https://photos.renthop.com/2/6939113_0c6f008c...  7.740664   \n",
       "\n",
       "      street_address  interest  \n",
       "29164                        2  \n",
       "29296                        0  \n",
       "43878                        0  \n",
       "47676                        1  \n",
       "65816                        0  \n",
       "8530                         0  \n",
       "85315                        2  \n",
       "8633                         0  \n",
       "93408                        0  \n",
       "96402                        1  "
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.loc[(train.longitude != 0.0) & (train.latitude != 0.0) &(train.street_address == \"\")]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>building_id</th>\n",
       "      <th>created</th>\n",
       "      <th>description</th>\n",
       "      <th>display_address</th>\n",
       "      <th>features</th>\n",
       "      <th>latitude</th>\n",
       "      <th>listing_id</th>\n",
       "      <th>longitude</th>\n",
       "      <th>manager_id</th>\n",
       "      <th>photos</th>\n",
       "      <th>price</th>\n",
       "      <th>street_address</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>101102</th>\n",
       "      <td>2.0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-04-04 23:58:53</td>\n",
       "      <td>CHILL EAST VILLAGE BUILDING IN THE HEART OF\\rN...</td>\n",
       "      <td></td>\n",
       "      <td>[Laundry In Unit]</td>\n",
       "      <td>40.7307</td>\n",
       "      <td>6822528</td>\n",
       "      <td>-73.9838</td>\n",
       "      <td>b6366b42ae29a86e2e33ffc66cfeafc7</td>\n",
       "      <td>[https://photos.renthop.com/2/6822528_07fb11a6...</td>\n",
       "      <td>8.630522</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18571</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-06-12 19:29:28</td>\n",
       "      <td>Bright and spacious studio with modern finishe...</td>\n",
       "      <td></td>\n",
       "      <td>[Common Outdoor Space, Cats Allowed, Dogs Allo...</td>\n",
       "      <td>40.7128</td>\n",
       "      <td>7153400</td>\n",
       "      <td>-74.0059</td>\n",
       "      <td>b68f249ae0aeb220626960fa1934c418</td>\n",
       "      <td>[https://photos.renthop.com/2/7153400_d51c8ded...</td>\n",
       "      <td>7.928406</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23629</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-06-07 17:02:35</td>\n",
       "      <td>For a private viewing please call or text me a...</td>\n",
       "      <td></td>\n",
       "      <td>[Common Outdoor Space, Cats Allowed, Dogs Allo...</td>\n",
       "      <td>40.7064</td>\n",
       "      <td>7122013</td>\n",
       "      <td>-74.0156</td>\n",
       "      <td>46f0c2d3ec259176e74bd67d5d4e22ff</td>\n",
       "      <td>[https://photos.renthop.com/2/7122013_5be65acd...</td>\n",
       "      <td>8.611594</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25364</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-06-10 04:10:30</td>\n",
       "      <td>RENOVATED studio apartment with great SPACIOUS...</td>\n",
       "      <td></td>\n",
       "      <td>[Doorman, Elevator, Laundry In Building]</td>\n",
       "      <td>40.7128</td>\n",
       "      <td>7135842</td>\n",
       "      <td>-74.0059</td>\n",
       "      <td>2ec6c71d78dd9df9046ce6899ec42de8</td>\n",
       "      <td>[https://photos.renthop.com/2/7135842_9df7e76b...</td>\n",
       "      <td>7.696213</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26557</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-06-12 17:16:23</td>\n",
       "      <td>MASSIVE two-bedroom apartment in charming buil...</td>\n",
       "      <td></td>\n",
       "      <td>[Elevator]</td>\n",
       "      <td>40.7128</td>\n",
       "      <td>7153357</td>\n",
       "      <td>-74.0059</td>\n",
       "      <td>32396a0a600b721a4a7655d4ddcedc4d</td>\n",
       "      <td>[https://photos.renthop.com/2/7153357_9134640b...</td>\n",
       "      <td>7.625595</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50093</th>\n",
       "      <td>2.0</td>\n",
       "      <td>3</td>\n",
       "      <td>38113ad58a685a6dabc8f89223396606</td>\n",
       "      <td>2016-05-30 02:33:16</td>\n",
       "      <td>&lt;center&gt;&lt;strong&gt;&lt;font color=#006600&gt;- &lt;u&gt;NO FE...</td>\n",
       "      <td>East 25th Street</td>\n",
       "      <td>[Cats Allowed, No Fee, Doorman, Elevator, Fitn...</td>\n",
       "      <td>40.7128</td>\n",
       "      <td>7083399</td>\n",
       "      <td>-74.0059</td>\n",
       "      <td>8365f1154ced533439de202ebada41e2</td>\n",
       "      <td>[https://photos.renthop.com/2/7083399_5551e40d...</td>\n",
       "      <td>8.366370</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>54870</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-05-25 04:26:26</td>\n",
       "      <td>INCREDIBLY SPACIOUS ALCOVE STUDIO WITH WASHER/...</td>\n",
       "      <td></td>\n",
       "      <td>[No Fee, Doorman, Fitness Center, Common Outdo...</td>\n",
       "      <td>40.7730</td>\n",
       "      <td>7064249</td>\n",
       "      <td>-73.9909</td>\n",
       "      <td>b07d2874c01373acabe406e06f862e44</td>\n",
       "      <td>[https://photos.renthop.com/2/7064249_6830c593...</td>\n",
       "      <td>8.055158</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>64335</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-05-16 14:38:06</td>\n",
       "      <td>This spacious sunny STUDIO with bedroom has a ...</td>\n",
       "      <td>Gold st</td>\n",
       "      <td>[Common Outdoor Space, Laundry In Unit, Cats A...</td>\n",
       "      <td>40.7128</td>\n",
       "      <td>7020063</td>\n",
       "      <td>-74.0059</td>\n",
       "      <td>3e554a8117e0fef83c7b49378b2a2589</td>\n",
       "      <td>[https://photos.renthop.com/2/7020063_a6fffacb...</td>\n",
       "      <td>7.899153</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>71741</th>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-05-19 18:50:15</td>\n",
       "      <td>This convertible 3 bedroom is available immedi...</td>\n",
       "      <td></td>\n",
       "      <td>[Elevator, Fitness Center]</td>\n",
       "      <td>40.7060</td>\n",
       "      <td>7040012</td>\n",
       "      <td>-74.0088</td>\n",
       "      <td>46f0c2d3ec259176e74bd67d5d4e22ff</td>\n",
       "      <td>[https://photos.renthop.com/2/7040012_9fdc02e9...</td>\n",
       "      <td>8.342840</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>77720</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-05-19 17:50:28</td>\n",
       "      <td>Stunning 2 bedroom Convertible on Wall street....</td>\n",
       "      <td></td>\n",
       "      <td>[Elevator, Fitness Center]</td>\n",
       "      <td>40.7060</td>\n",
       "      <td>7714404</td>\n",
       "      <td>-74.0088</td>\n",
       "      <td>46f0c2d3ec259176e74bd67d5d4e22ff</td>\n",
       "      <td>[https://photos.renthop.com/2/7039975_ffece52e...</td>\n",
       "      <td>8.109225</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>81793</th>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-05-18 16:21:23</td>\n",
       "      <td>Check Out This Lovely Second Floor Apartment L...</td>\n",
       "      <td>58th Ave</td>\n",
       "      <td>[]</td>\n",
       "      <td>40.7458</td>\n",
       "      <td>7033880</td>\n",
       "      <td>-73.8285</td>\n",
       "      <td>252f83f185d71f7bb0ec28fecbf53fa5</td>\n",
       "      <td>[https://photos.renthop.com/2/7033880_45aa109c...</td>\n",
       "      <td>7.718685</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>91210</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-04-25 21:25:03</td>\n",
       "      <td>Beautiful one bedroom. Renovated kitchen, spac...</td>\n",
       "      <td></td>\n",
       "      <td>[Beautiful one bedroom. Renovated kitchen, spa...</td>\n",
       "      <td>40.7128</td>\n",
       "      <td>6923630</td>\n",
       "      <td>-74.0059</td>\n",
       "      <td>23fe9db389d31048a104bd4686879a77</td>\n",
       "      <td>[https://photos.renthop.com/2/6923630_24ac4825...</td>\n",
       "      <td>7.696213</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98172</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-04-23 16:25:47</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td>[Laundry In Building]</td>\n",
       "      <td>40.7128</td>\n",
       "      <td>6917032</td>\n",
       "      <td>-74.0059</td>\n",
       "      <td>e6472c7237327dd3903b3d6f6a94515a</td>\n",
       "      <td>[]</td>\n",
       "      <td>6.907755</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        bathrooms  bedrooms                       building_id  \\\n",
       "101102        2.0         4                                 0   \n",
       "18571         1.0         0                                 0   \n",
       "23629         1.0         1                                 0   \n",
       "25364         1.0         0                                 0   \n",
       "26557         1.0         2                                 0   \n",
       "50093         2.0         3  38113ad58a685a6dabc8f89223396606   \n",
       "54870         1.0         1                                 0   \n",
       "64335         1.0         0                                 0   \n",
       "71741         1.0         3                                 0   \n",
       "77720         1.0         2                                 0   \n",
       "81793         1.0         3                                 0   \n",
       "91210         1.0         1                                 0   \n",
       "98172         1.0         1                                 0   \n",
       "\n",
       "                    created  \\\n",
       "101102  2016-04-04 23:58:53   \n",
       "18571   2016-06-12 19:29:28   \n",
       "23629   2016-06-07 17:02:35   \n",
       "25364   2016-06-10 04:10:30   \n",
       "26557   2016-06-12 17:16:23   \n",
       "50093   2016-05-30 02:33:16   \n",
       "54870   2016-05-25 04:26:26   \n",
       "64335   2016-05-16 14:38:06   \n",
       "71741   2016-05-19 18:50:15   \n",
       "77720   2016-05-19 17:50:28   \n",
       "81793   2016-05-18 16:21:23   \n",
       "91210   2016-04-25 21:25:03   \n",
       "98172   2016-04-23 16:25:47   \n",
       "\n",
       "                                              description   display_address  \\\n",
       "101102  CHILL EAST VILLAGE BUILDING IN THE HEART OF\\rN...                     \n",
       "18571   Bright and spacious studio with modern finishe...                     \n",
       "23629   For a private viewing please call or text me a...                     \n",
       "25364   RENOVATED studio apartment with great SPACIOUS...                     \n",
       "26557   MASSIVE two-bedroom apartment in charming buil...                     \n",
       "50093   <center><strong><font color=#006600>- <u>NO FE...  East 25th Street   \n",
       "54870   INCREDIBLY SPACIOUS ALCOVE STUDIO WITH WASHER/...                     \n",
       "64335   This spacious sunny STUDIO with bedroom has a ...           Gold st   \n",
       "71741   This convertible 3 bedroom is available immedi...                     \n",
       "77720   Stunning 2 bedroom Convertible on Wall street....                     \n",
       "81793   Check Out This Lovely Second Floor Apartment L...          58th Ave   \n",
       "91210   Beautiful one bedroom. Renovated kitchen, spac...                     \n",
       "98172                                                                         \n",
       "\n",
       "                                                 features  latitude  \\\n",
       "101102                                  [Laundry In Unit]   40.7307   \n",
       "18571   [Common Outdoor Space, Cats Allowed, Dogs Allo...   40.7128   \n",
       "23629   [Common Outdoor Space, Cats Allowed, Dogs Allo...   40.7064   \n",
       "25364            [Doorman, Elevator, Laundry In Building]   40.7128   \n",
       "26557                                          [Elevator]   40.7128   \n",
       "50093   [Cats Allowed, No Fee, Doorman, Elevator, Fitn...   40.7128   \n",
       "54870   [No Fee, Doorman, Fitness Center, Common Outdo...   40.7730   \n",
       "64335   [Common Outdoor Space, Laundry In Unit, Cats A...   40.7128   \n",
       "71741                          [Elevator, Fitness Center]   40.7060   \n",
       "77720                          [Elevator, Fitness Center]   40.7060   \n",
       "81793                                                  []   40.7458   \n",
       "91210   [Beautiful one bedroom. Renovated kitchen, spa...   40.7128   \n",
       "98172                               [Laundry In Building]   40.7128   \n",
       "\n",
       "        listing_id  longitude                        manager_id  \\\n",
       "101102     6822528   -73.9838  b6366b42ae29a86e2e33ffc66cfeafc7   \n",
       "18571      7153400   -74.0059  b68f249ae0aeb220626960fa1934c418   \n",
       "23629      7122013   -74.0156  46f0c2d3ec259176e74bd67d5d4e22ff   \n",
       "25364      7135842   -74.0059  2ec6c71d78dd9df9046ce6899ec42de8   \n",
       "26557      7153357   -74.0059  32396a0a600b721a4a7655d4ddcedc4d   \n",
       "50093      7083399   -74.0059  8365f1154ced533439de202ebada41e2   \n",
       "54870      7064249   -73.9909  b07d2874c01373acabe406e06f862e44   \n",
       "64335      7020063   -74.0059  3e554a8117e0fef83c7b49378b2a2589   \n",
       "71741      7040012   -74.0088  46f0c2d3ec259176e74bd67d5d4e22ff   \n",
       "77720      7714404   -74.0088  46f0c2d3ec259176e74bd67d5d4e22ff   \n",
       "81793      7033880   -73.8285  252f83f185d71f7bb0ec28fecbf53fa5   \n",
       "91210      6923630   -74.0059  23fe9db389d31048a104bd4686879a77   \n",
       "98172      6917032   -74.0059  e6472c7237327dd3903b3d6f6a94515a   \n",
       "\n",
       "                                                   photos     price  \\\n",
       "101102  [https://photos.renthop.com/2/6822528_07fb11a6...  8.630522   \n",
       "18571   [https://photos.renthop.com/2/7153400_d51c8ded...  7.928406   \n",
       "23629   [https://photos.renthop.com/2/7122013_5be65acd...  8.611594   \n",
       "25364   [https://photos.renthop.com/2/7135842_9df7e76b...  7.696213   \n",
       "26557   [https://photos.renthop.com/2/7153357_9134640b...  7.625595   \n",
       "50093   [https://photos.renthop.com/2/7083399_5551e40d...  8.366370   \n",
       "54870   [https://photos.renthop.com/2/7064249_6830c593...  8.055158   \n",
       "64335   [https://photos.renthop.com/2/7020063_a6fffacb...  7.899153   \n",
       "71741   [https://photos.renthop.com/2/7040012_9fdc02e9...  8.342840   \n",
       "77720   [https://photos.renthop.com/2/7039975_ffece52e...  8.109225   \n",
       "81793   [https://photos.renthop.com/2/7033880_45aa109c...  7.718685   \n",
       "91210   [https://photos.renthop.com/2/6923630_24ac4825...  7.696213   \n",
       "98172                                                  []  6.907755   \n",
       "\n",
       "       street_address  \n",
       "101102                 \n",
       "18571                  \n",
       "23629                  \n",
       "25364                  \n",
       "26557                  \n",
       "50093                  \n",
       "54870                  \n",
       "64335                  \n",
       "71741                  \n",
       "77720                  \n",
       "81793                  \n",
       "91210                  \n",
       "98172                  "
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.loc[(test.longitude != 0.0) & (test.latitude != 0.0) &(test.street_address == \"\")]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(7) 日期"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAs8AAAEsCAYAAAA8Sl4GAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAHPBJREFUeJzt3X2wZHV95/H3R1BLFuRxJDgDGR8IBh+iOIvWupsQSSkYV9gEou6ujoiObomP2QR0zUpitCDZVXFLrZoVBFIKQaKRjUSDqLHcFXRAUFHR8YkZQRhlQC1NcPS7f/QZt3fmzsyZ2w+/e7vfr6pbt/t3Tvf9zofDvd/+9e+cTlUhSZIkac/u17oASZIkabmweZYkSZJ6snmWJEmSerJ5liRJknqyeZYkSZJ6snmWJEmSerJ5liRJknqyeZYkSZJ6snmWJEmSetq3dQG7c9hhh9Xq1atblyFJkqQZd8MNN3y/qlbsab8l3TyvXr2aDRs2tC5DkiRJMy7Jd/rs57INSZIkqSebZ0mSJKknm2dJkiSppz02z0kuSnJXki8Njf1lkq8m+UKSDyY5aGjba5NsTHJrkqcPjZ/UjW1Mcs74/ymSJEnSZPWZeb4YOGmHsWuAx1TV44CvAa8FSHIs8Bzg0d1j3plknyT7AO8ATgaOBZ7b7StJkiQtG3tsnqvqU8DdO4z9Q1Vt6+5eB6zqbp8CXF5V/1xV3wI2Asd3Xxur6ptVdR9webevJEmStGyMY83zC4G/726vBDYNbdvcje1qfCdJ1iXZkGTDli1bxlCeJEmSNB4jNc9J/guwDXjv9qEFdqvdjO88WLW+qtZU1ZoVK/Z4nWpJkiRpahb9ISlJ1gLPBE6squ2N8GbgyKHdVgG3d7d3NS5JkiQtC4tqnpOcBJwN/FZV/WRo01XA+5K8BXgocDTwWQYzz0cneRjwXQYnFf77UQqXJEmaC+ee229MU7HH5jnJZcAJwGFJNgNvYHB1jQcC1yQBuK6qXlpVtyS5Avgyg+UcL6uqn3fPcxbwUWAf4KKqumUC/x5JkiRpYvbYPFfVcxcYvnA3+78JeNMC41cDV+9VdZIkSdIS4icMSpIkST3ZPEuSJEk92TxLkiRJPdk8S5IkST3ZPEuSJEk92TxLkiRJPdk8S5IkST3ZPEuSJEk92TxLkiRJPdk8S5IkST3ZPEuSJEk92TxLkiRJPdk8S5IkST3ZPEuSJEk92TxLkiRJPdk8S5IkST3ZPEuSJEk92TxLkiRJPdk8S5IkST3ZPEuSJEk97du6AEmSpCXp3HP7jWmuOPMsSZIk9WTzLEmSJPVk8yxJkiT1ZPMsSZIk9WTzLEmSJPW0x+Y5yUVJ7krypaGxQ5Jck+Tr3feDu/EkeXuSjUm+kOS4oces7fb/epK1k/nnSJIkSZPTZ+b5YuCkHcbOAa6tqqOBa7v7ACcDR3df64B3waDZBt4APAk4HnjD9oZbkiRJWi722DxX1aeAu3cYPgW4pLt9CXDq0PilNXAdcFCSI4CnA9dU1d1VtRW4hp0bckmSJGlJW+ya58Or6g6A7vtDuvGVwKah/TZ3Y7sa30mSdUk2JNmwZcuWRZYnSZIkjd+4TxjMAmO1m/GdB6vWV9WaqlqzYsWKsRYnSZIkjWKxzfOd3XIMuu93deObgSOH9lsF3L6bcUmSJGnZWGzzfBWw/YoZa4EPDY0/v7vqxpOBe7tlHR8Fnpbk4O5Ewad1Y5IkSdKyse+edkhyGXACcFiSzQyumnEecEWSM4HbgNO73a8GngFsBH4CnAFQVXcneSPwuW6/P6uqHU9ClCRJkpa0PTbPVfXcXWw6cYF9C3jZLp7nIuCivapOkiRJWkL8hEFJkiSppz3OPEuSJC0Z557bb0yaEGeeJUmSpJ5sniVJkqSebJ4lSZKknmyeJUmSpJ48YXCp88QISZKkJcOZZ0mSJKknm2dJkiSpJ5tnSZIkqSebZ0mSJKknm2dJkiSpJ5tnSZIkqSebZ0mSJKknr/MsSVJru7p+v9f1l5YcZ54lSZKknmyeJUmSpJ5sniVJkqSebJ4lSZKknmyeJUmSpJ5sniVJkqSevFSdJGnAy6VJ0h458yxJkiT1ZPMsSZIk9WTzLEmSJPU00prnJK8GXgQU8EXgDOAI4HLgEOBG4HlVdV+SBwKXAk8EfgA8u6q+PcrPlzRnXJMrSWps0TPPSVYCrwDWVNVjgH2A5wDnA2+tqqOBrcCZ3UPOBLZW1SOBt3b7SZIkScvGqMs29gUelGRfYD/gDuCpwJXd9kuAU7vbp3T36bafmCQj/nxJkiRpahbdPFfVd4H/BtzGoGm+F7gBuKeqtnW7bQZWdrdXApu6x27r9j90sT9fkiRJmrZRlm0czGA2+WHAQ4F/AZy8wK61/SG72Tb8vOuSbEiyYcuWLYstT5IkSRq7UZZt/A7wraraUlU/Az4A/CvgoG4ZB8Aq4Pbu9mbgSIBu+4HA3Ts+aVWtr6o1VbVmxYoVI5QnSZIkjdcoV9u4DXhykv2AnwInAhuATwCnMbjixlrgQ93+V3X3P9Nt/3hV7TTzLEmSpDmwTK+gNMqa5+sZnPh3I4PL1N0PWA+cDbwmyUYGa5ov7B5yIXBoN/4a4JwR6pYkSZKmbqTrPFfVG4A37DD8TeD4Bfb9J+D0UX6eJEmS1NJIzbMkSZqwZfrWtjSrbJ4ltbHQH36bAUnSEjfqh6RIkiRJc8OZZ2kW+TavJEkTYfOspce38yVJ0hLlsg1JkiSpJ2eeNTkuHZAkSTPGmWdJkiSpJ2eeNd9cXy1pOfN3mBbDd4ZH4syzJEmS1JPNsyRJktSTyzYkad74Vr8kLZrNs7QrNhiSJGkHNs8ajScdSJKcbNAcsXmWpHHaXRNhgyFJy57NsyRp+fDdLun/54vyqbN5lqSlzGZR88jjXkuYl6qTJEmSenLmWZKWAt96laRlweZZ2lu+nShJ0tyyeV4MZ4gkzRtfNEoSYPMsSRqVEwqS5ognDEqSJEk9OfOsNpypkiRJy5DNszROrguVJGmm2TxLkibHd5m0VHgstjGDk0ojNc9JDgLeDTwGKOCFwK3AXwOrgW8Df1BVW5MEuAB4BvAT4AVVdeMoP1+SpF5snCSNyagzzxcAH6mq05I8ANgPeB1wbVWdl+Qc4BzgbOBk4Oju60nAu7rvWiz/GEiSljr/VmnGLLp5TvJg4DeBFwBU1X3AfUlOAU7odrsE+CSD5vkU4NKqKuC6JAclOaKq7lh09ZLGazn/kZvmW4Mz+DakJKmfUWaeHw5sAd6T5DeAG4BXAodvb4ir6o4kD+n2XwlsGnr85m7M5lmSpHFbzi+GpSVslOZ5X+A44OVVdX2SCxgs0diVLDBWO+2UrAPWARx11FEjlLeM+AtOkjRvfAdHy9QozfNmYHNVXd/dv5JB83zn9uUYSY4A7hra/8ihx68Cbt/xSatqPbAeYM2aNTs11+rBX0jaHV+sSZK0aItunqvqe0k2JTmmqm4FTgS+3H2tBc7rvn+oe8hVwFlJLmdwouC9rneWJI2NLwwny3wlYPSrbbwceG93pY1vAmcw+MjvK5KcCdwGnN7tezWDy9RtZHCpujNG/NmSJEnSVI3UPFfVTcCaBTaduMC+BbxslJ8naYjLcyRJmrr7tS5AkiRJWi5sniVJkqSeRl3zrOXGt/olSZIWzeZZ0uzzKgGSdsVJJe0lm2dJkiQNONmwRzbPkpYef3lLkpYoTxiUJEmSenLmWcuLM5KSJKkhZ54lSZKknmyeJUmSpJ5sniVJkqSeXPMsSZpfXuNX0l6yeZa0ZzYYkiQBNs+SJEl7z6s/zS3XPEuSJEk92TxLkiRJPdk8S5IkST3ZPEuSJEk92TxLkiRJPdk8S5IkST3ZPEuSJEk9eZ1naSnweqGSJC0LzjxLkiRJPdk8S5IkST25bEOSJGkWuSRwIpx5liRJknoaeeY5yT7ABuC7VfXMJA8DLgcOAW4EnldV9yV5IHAp8ETgB8Czq+rbo/58SZImYlczdM7cSXNtHDPPrwS+MnT/fOCtVXU0sBU4sxs/E9haVY8E3trtJ0mSJC0bIzXPSVYBvwu8u7sf4KnAld0ulwCndrdP6e7TbT+x21+SJElaFkZdtvE24I+BA7r7hwL3VNW27v5mYGV3eyWwCaCqtiW5t9v/+yPWIO3+7VXfepUkLXX+rVo2Ft08J3kmcFdV3ZDkhO3DC+xaPbYNP+86YB3AUUcdtdjyJGn2+cdWkqZulGUbTwGeleTbDE4QfCqDmeiDkmxvylcBt3e3NwNHAnTbDwTu3vFJq2p9Va2pqjUrVqwYoTxJkiRpvBY981xVrwVeC9DNPP/nqvoPSd4PnMagoV4LfKh7yFXd/c902z9eVTvNPKshrwcpSZK0W5P4kJSzgcuT/DnweeDCbvxC4K+SbGQw4/ycCfxsSZK0J06WSIs2lua5qj4JfLK7/U3g+AX2+Sfg9HH8PEmSJKkFP2FQkiRJ6snmWZIkSeppEmueJWn5cO2nJGkvOPMsSZIk9eTMszQt8zjDOY//ZvXn8SFpGbJ5nhY/CUySJGnZs3mWpIX4gleStACbZ0mSNBtcCqQpsHlWP/5CasfsJUlL3Rz9rfJqG5IkSVJPzjyPk2skJUmSZpozz5IkSVJPzjxL0iyao/WHGiPfQZX2yJlnSZIkqSebZ0mSJKknm2dJkiSpJ5tnSZIkqSdPGJQkLS2etCZpCbN5liRJ0p55FR/AZRuSJElSbzbPkiRJUk82z5IkSVJPNs+SJElST54wKEnS3vLEKWlu2TxLkiSNky+uZprLNiRJkqSeFt08JzkyySeSfCXJLUle2Y0fkuSaJF/vvh/cjSfJ25NsTPKFJMeN6x8hSZIkTcMoyza2AX9YVTcmOQC4Ick1wAuAa6vqvCTnAOcAZwMnA0d3X08C3tV9lyRpdviWvTTTFj3zXFV3VNWN3e0fAV8BVgKnAJd0u10CnNrdPgW4tAauAw5KcsSiK5ckSZKmbCxrnpOsBp4AXA8cXlV3wKDBBh7S7bYS2DT0sM3dmCRJkrQsjNw8J9kf+BvgVVX1w93tusBYLfB865JsSLJhy5Yto5YnSZIkjc1IzXOS+zNonN9bVR/ohu/cvhyj+35XN74ZOHLo4auA23d8zqpaX1VrqmrNihUrRilPkiRJGqtRrrYR4ELgK1X1lqFNVwFru9trgQ8NjT+/u+rGk4F7ty/vkCRJkpaDUa628RTgecAXk9zUjb0OOA+4IsmZwG3A6d22q4FnABuBnwBnjPCzJUmSpKlbdPNcVZ9m4XXMACcusH8BL1vsz5MkSZJa8xMGJUmSpJ5sniVJkqSebJ4lSZKknmyeJUmSpJ5sniVJkqSebJ4lSZKknmyeJUmSpJ5sniVJkqSebJ4lSZKknmyeJUmSpJ5sniVJkqSebJ4lSZKknmyeJUmSpJ5sniVJkqSebJ4lSZKknmyeJUmSpJ5sniVJkqSebJ4lSZKknmyeJUmSpJ5sniVJkqSebJ4lSZKknmyeJUmSpJ5sniVJkqSebJ4lSZKknmyeJUmSpJ72bV2AJEnSXDj33L0b15I09ZnnJCcluTXJxiTnTPvnS5IkSYs11eY5yT7AO4CTgWOB5yY5dpo1SJIkSYs17Znn44GNVfXNqroPuBw4Zco1SJIkSYsy7TXPK4FNQ/c3A0+acg39LLT+yDVJ0s5cwyf1598WadlLVU3vhyWnA0+vqhd1958HHF9VLx/aZx2wrrt7DHDr1ArUsMOA77cuYk6ZfRvm3o7Zt2P27Zh9O7vK/lerasWeHjztmefNwJFD91cBtw/vUFXrgfXTLEo7S7Khqta0rmMemX0b5t6O2bdj9u2YfTujZj/tNc+fA45O8rAkDwCeA1w15RokSZKkRZnqzHNVbUtyFvBRYB/goqq6ZZo1SJIkSYs19Q9Jqaqrgaun/XO111w6047Zt2Hu7Zh9O2bfjtm3M1L2Uz1hUJIkSVrOpv4Jg5IkSdJyZfMsSZIk9WTzLEmSJPVk86xfSnJIkoNb1zHPkhzXuoZ5leSw1jVImm1JViR5QpLHJtm/dT1aHJvnOZfkqCSXJ9kCXA98Lsld3djqttXNtiTH7fD1ROCq7herTfQEJTk5ybeSfLrL+xbg+iSbk5zYur5Z1jUN1yXZlGT98Av2JJ9tWdusS/LCodurklyb5J4k/yfJr7WsbdYlOTbJx4DPMPhb+27gi0kuTnJg2+pmW5JHJfn7JB9O8ogu83uSfDbJry/qOb3axnxL8hngbcCVVfXzbmwf4HTgVVX15Jb1zbIkvwCuA/55aPjJ3VhV1VObFDYHktwEPBc4CPg74Her6rruF+l7q8oXLxOS5NPAnzM4zl8EnAE8q6q+keTzVfWEpgXOsCQ3bj+2k1wBXAv8T+AU4Kyq8oXjhCS5DlhbVbcmOR54WVWtTfJi4OlVdVrjEmdWkk8BfwnsD5wHnA38NfBMBn3OXh/3Ns9zLsnXq+rovd2m0SU5DXg5cH53/XOSfKuqHta2stm3QxOxqaqOHNp2U1U9vl11s23HfJP8NoNrrj4PeKcvXCZnh+N+x/8OvnCZoCQ3V9VvDN0f/m/x5ao6tl11s2342E6ysaoeObTtxsX8zpn6h6RoybkhyTuBS4BN3diRwFrg882qmgNVdWWSjwBvTHIG8IeAr2an454kLwEeDGxN8mrgCuB3gB83rWz2JcmBVXUvQFV9IsnvA38DHNK2tJm3KsnbgQArkty/qn7Wbbt/w7rmwTeS/AmD2f7fA24CSHJ/7MUmbZ+h22/ZYdsDFvOE/gfT84EzgT8FVjL4pboJ+F/AhQ3rmgtV9WPg1Ukez+AFjCeQTMda4PUMXqw8jcESjo8C3wFe3LCueXA+8OsMlm0AUFVf6Naa/0mzqubDHw3d3sDg983WJL8CXNWmpLnxQuB13dfNwCu78f0Y/B3W5Lwjyf5V9eOqeuf2wSSPBD62mCd02Ya0RCQJcEBV/bB1LZIkaWFebUO7lOS/tq5h1iV5epIzk6yugR924y/c02O1eEn2TfKS7gzsLyS5ubv9ku5tVE1Ikn26nN+Y5Ck7bHt9q7rmwW6O+5d63LeTZH3rGmbZ0HH/kXEd9848a5eS3FZVR7WuY1YleTPwr4EbgX8LvK2q/ke3bVEnMaifJJcB9zBYKrO5G17FYDnHIVX17Fa1zbok72bwVvVnGZwk+I9V9Zpum8f9BHnct5NkV+v5A9xcVaumWc88mcRxb/M855LsaolAgAdVleviJyTJF4EnVNW2JAcB7wNurapXe+b7ZCW5taqO2cW2r1WV17ydkCRfqKrHdbf3Bd4JHMZg3fl1HveT43HfTpKfMzinIkPD1d1fWVWLOnFNezaJ495lG7oHOLqqHrzD1wHAHa2Lm3H7VtU2gKq6h8Hs84OTvJ9FngGs3rYmOT3JL38HJrlfkmcDWxvWNQ9+eWxX1baqWsfgygMfxxNmJ83jvp1vAidU1cOGvh7eXZr0ztbFzbixH/c2z7oU+NVdbHvfNAuZQ99I8lvb71TVz6vqTOBWBlcj0OQ8BzgNuDPJ15J8jcEfsN/rtmlyNiQ5aXigqv4MeA+wuklF88Pjvp23AQfvYttfTLOQOTT2495lG1IjSR4EUFU/XWDbyqr67vSrmj9JDmXwu/D7rWuRpsXjXvNoXMe9M8/aSZJzW9cwD6rqpzs2ztuzt3Genqr6QVV93zPe2zH76fO4b8/sp29cx73NsxbyrNYFzDGzb2dN6wLmmNm3Y/btmH07I2Vv86yFZM+7aELMvp27Whcwx8y+HbNvx+zbGSl71zxrJ0nuV1W/aF3HPDJ7SZKWNmeetZCvti5gjpn9FCR53NDt+yd5fZKrkrw5yX4ta5t1Zt9OkrOSHNbdfmSSTyXZmuT6JI9tXd8sM/t2knwgyX9MMrZLYTrzPOeS/IjBhdrh/y0Z2A/4CVBV9eAmhc0Bs29n+JPskvx34FAGl0o7FTi0qp7fsr5ZZvbtJLmlqh7d3f4w8O6q+mCSE4A3VdVTdvsEWjSzbyfJd4HPAE8FPgZcBny4qu5b7HP66XG6GDgQ+KOquhMgybe6C7drsi7G7FsZXlt+IvAvq+pnST4F3Nyopnlh9u0M/81/SFV9EKCqPpnkgEY1zQuzb+euqjqty/lU4MXA+iR/B1xWVf+wt0/oso05V1UvBy4ALkvyiu4TeHw7YgrMvqkDk/y7JL8PPLCqfgaD6X78bzBpZt/OlUkuTvJw4INJXpXkqCRnALe1Lm7GmX07BVBVP6qqv6qqZwDHANcD5yzmCV22IWBwohpwFnA68IiqemjjkuaG2U9fkvfsMHROVd2Z5FeA91bViS3qmgdm31aSFwD/CXgE8EBgE/C3wPlVdW/D0mae2beR5FNV9ZtjfU6bZw1LcgTwhKq6unUt88bsJUla+lzzLJI8CjgFWMng7Y3bu7W3X2lb2ewz+3YWyh64yuwnz+zbMft2zL6dcWfvmuc5l+Rs4HIGJ/F8Fvhcd/uyJItaC6R+zL4ds2/H7Nsx+3bMvp1JZO+yjTmX5GvAo7eftDM0/gDglqo6uk1ls8/s2zH7dsy+HbNvx+zbmUT2zjzrF8BCJ6gd0W3T5Jh9O2bfjtm3Y/btmH07Y8/eNc96FXBtkq8zOPMX4CjgkQyuAKHJMft2zL4ds2/H7Nsx+3bGnr3LNrT9UmnHM1hIH2Az8Lmq+nnTwuaA2bdj9u2YfTtm347ZtzPu7G2etZMk66pqfes65pHZt2P27Zh9O2bfjtm3M2r2rnnWQl7auoA5ZvbtmH07Zt+O2bdj9u2MlL3NsxaS1gXMMbNvx+zbMft2zL4ds29npOxdtqGdJFlVVZtb1zGPzL4ds2/H7Nsx+3bMvp1Rs3fmec4leVKSB3e3H5TkT4F3JTk/yYGNy5tpZt+O2bdj9u2YfTtm384ksrd51kXAT7rbFwAHAud3Y+9pVdScMPt2zL4ds2/H7Nsx+3bGnr3Xedb9qmpbd3tNVR3X3f50kptaFTUnzL4ds2/H7Nsx+3bMvp2xZ+/Ms76U5Izu9s1J1gAk+TXgZ7t+mMbA7Nsx+3bMvh2zb8fs2xl79p4wOOe69T4XAP8G+D5wHINP4NkEvKKqbm5Y3kwz+3bMvh2zb8fs2zH7diaRvc2zAEhyAPBwBkt5NlfVnY1Lmhtm347Zt2P27Zh9O2bfzjizt3nWLiXZv6p+3LqOeWT27Zh9O2bfjtm3Y/btLDZ71zxrd77cuoA5ZvbtmH07Zt+O2bdj9u0sKnuvtjHnkrxmV5uA/adZy7wx+3bMvh2zb8fs2zH7diaRvTPPejNwMHDADl/74/ExaWbfjtm3Y/btmH07Zt/O2LN35lk3An9bVTfsuCHJixrUM0/Mvh2zb8fs2zH7dsy+nbFn7wmDcy7JMcDdVbVlgW2Heybw5Jh9O2bfjtm3Y/btmH07k8je5lmSJEnqyXU2cy7JgUnOS/LVJD/ovr7SjR3Uur5ZZvbtmH07Zt+O2bdj9u1MInubZ10BbAVOqKpDq+pQ4Le7sfc3rWz2mX07Zt+O2bdj9u2YfTtjz95lG3Muya1VdczebtPozL4ds2/H7Nsx+3bMvp1JZO/Ms76T5I+THL59IMnhSc5m8Lnvmhyzb8fs2zH7dsy+HbNvZ+zZ2zzr2cChwD8m2ZrkbuCTwCHAH7QsbA6YfTtm347Zt2P27Zh9O2PP3mUbIsmjgFXAdcOf8Z7kpKr6SLvKZp/Zt2P27Zh9O2bfjtm3M+7snXmec0leAXwIOAv4UpJThja/uU1V88Hs2zH7dsy+HbNvx+zbmUT2fsKgXgw8sap+nGQ1cGWS1VV1AYPPfdfkmH07Zt+O2bdj9u2YfTtjz97mWftsfwujqr6d5AQGB9av4v/Qk2b27Zh9O2bfjtm3Y/btjD17l23oe0kev/1Od4A9EzgMeGyzquaD2bdj9u2YfTtm347ZtzP27D1hcM4lWQVsq6rvLbDtKVX1vxuUNRfMvh2zb8fs2zH7dsy+nUlkb/MsSZIk9eSyDUmSJKknm2dJkiSpJ5tnSZIkqSebZ0mSJKknm2dJkiSpp/8LSrnb9+FLiAMAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x29b1b390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#将时间转换成datetime型\n",
    "train[\"created\"] = pd.to_datetime(train[\"created\"])\n",
    "test[\"created\"] = pd.to_datetime(test[\"created\"])\n",
    "\n",
    "train[\"date_created\"] = train[\"created\"].dt.date\n",
    "test[\"date_created\"] = test[\"created\"].dt.date\n",
    "cnt_srs = train['date_created'].value_counts()\n",
    "\n",
    "\n",
    "plt.figure(figsize=(12,4))\n",
    "ax = plt.subplot(111)\n",
    "ax.bar(cnt_srs.index, cnt_srs.values, alpha=0.5,color=\"red\")\n",
    "ax.xaxis_date()\n",
    "plt.xticks(rotation='vertical')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0,0.5,u'Times')"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x12199080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#提取小时信息\n",
    "train['month'] = train['created'].dt.month\n",
    "test['month'] = test['created'].dt.month\n",
    "monthInteresting = train.groupby(['month', 'interest_level'])['month'].count().unstack('interest_level').fillna(0)\n",
    "monthInteresting[['low','medium',\"high\"]].plot(kind='bar', stacked=True);\n",
    "plt.ylabel(\"Times\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看出 就4，5，6月有数据，其中六月总数居多，几个月还相对平均"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0,0.5,u'Times')"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEHCAYAAAC5u6FsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAHdtJREFUeJzt3XmUFeW97vHvAyIOYFBAouBNg3LCDEqDIkMgGMDhihoIEleCiOKJ5KDkaoZ7DBqOyYrRi4qJURNUkjjiEDhKHHAIgog0CiiDEbUPdCSK4AyIyO/+sYu2wZ4KevfuTT+ftVy96623av+6bfrZbw1vKSIwMzOrrga5LsDMzPKLg8PMzFJxcJiZWSoODjMzS8XBYWZmqTg4zMwsFQeHmZml4uAwM7NUHBxmZpbKfrkuIBtatGgRBQUFuS7DzCyvLFmy5N2IaFlVv30yOAoKCigqKsp1GWZmeUXS/1Snnw9VmZlZKg4OMzNLxcFhZmap7JPnOMysfvnss88oKSlh69atuS4lLxxwwAG0adOGRo0a7dH2Dg4zy3slJSU0bdqUgoICJOW6nDotIti4cSMlJSW0bdt2j/bhQ1Vmlve2bt1K8+bNHRrVIInmzZvv1ejMwWFm+wSHRvXt7c/KwWFmZqn4HIflXNcZXbO6/5fHvJzV/ZvVNx5xmNk+68QTT6yyz/XXX8/mzZuzWsfSpUuZM2dOpX3uuOMOfvjDH9bo+2Zjn+DgMLN92HPPPVdlnz0Jjs8//zxV/+oERz5xcJjZPqtJkyYAPPPMMwwcOJARI0bQoUMHzjnnHCKCadOm8dZbbzFo0CAGDRoEwOOPP06fPn047rjjGDlyJB9//DGQmQNvypQp9OvXj5kzZ/L6668zbNgwevbsSf/+/Vm9ejUAM2fOpEuXLnTv3p0BAwawbds2Jk+ezL333kuPHj249957q6x7w4YNfPvb36ZXr1706tWLBQsWsGPHDgoKCnj//fdL+x1zzDG8/fbb5fbPJp/jMLN64aWXXmLFihUceeSR9O3blwULFjBx4kSmTp3K008/TYsWLXj33Xe56qqrmDt3LgcffDBXX301U6dOZfLkyUDmxrn58+cDMHjwYG6++Wbat2/PokWLuOiii3jqqaeYMmUKjz32GK1bt+b9999n//33Z8qUKRQVFfHb3/62WrVefPHFTJo0iX79+rF27VqGDh3KqlWrGD58OA899BBjx45l0aJFFBQU0KpVK7773e+W2z9bHBxmVi/07t2bNm3aANCjRw+Ki4vp16/fLn2ef/55Vq5cSd++fQHYtm0bffr0KV0/atQoAD7++GOee+45Ro4cWbru008/BaBv376ce+65fOc73+Gss87ao1rnzp3LypUrS5c//PBDPvroI0aNGsWUKVMYO3Ys99xzT2k9FfXPFgeHmdULjRs3Ln3dsGFDtm/f/qU+EcG3vvUt7r777nL3cfDBBwOwY8cOmjVrxtKlS7/U5+abb2bRokU88sgj9OjRo9w+VdmxYwcLFy7kwAMP3KW9T58+rFmzhg0bNvDXv/6Vyy+/vNL+2eJzHGZWrzVt2rT00/kJJ5zAggULWLNmDQCbN2/mH//4x5e2OeSQQ2jbti0zZ84EMoGzbNkyAF5//XWOP/54pkyZQosWLVi3bt0u71EdQ4YM2eWw1s7wkcSZZ57Jj370Izp27Ejz5s0r7Z8tDg4zq9fGjx/PySefzKBBg2jZsiV33HEHo0ePplu3bpxwwgmlJ713d+eddzJ9+nS6d+9O586dmTVrFgCXXXYZXbt2pUuXLgwYMIDu3bszaNAgVq5cWe2T49OmTaOoqIhu3brRqVMnbr755tJ1o0aN4i9/+UvpYaqq+meDIiKrb5ALhYWF4ScA5g/fAGh7a9WqVXTs2DHXZeSV8n5mkpZERGFV23rEYWZmqfjkuJlZLbr99tu54YYbdmnr27cvv/vd73JUUXoODjOzWjR27FjGjh2b6zL2ig9VmZlZKg4OMzNLxcFhZmap+ByH5dzLb67NdQm2jyn46SM1ur/iX59aZZ8mTZqUToi4r/OIw8zMUnFwmJnVoIjgsssuo0uXLnTt2rX0TvGLLrqI2bNnA3DmmWdy3nnnATB9+vTSOafyhYPDzKwGPfjggyxdupRly5Yxd+5cLrvsMtavX8+AAQN49tlnAfjnP/9ZOpvt/Pnz6d+/fy5LTs3BYWZWg+bPn8/o0aNp2LAhrVq14hvf+AaLFy+mf//+PPvss6xcuZJOnTrRqlUr1q9fz8KFC6v1iNu6xCfHzcxqUEXz/7Vu3Zr33nuPRx99lAEDBrBp0ybuu+8+mjRpQtOmTWu5yr3j4NgHeJJAs7pjwIAB3HLLLYwZM4ZNmzYxb948rrnmGiDzPI3rr7+ep556io0bNzJixAhGjBiR44rTc3CY2T6nOpfPZsuZZ57JwoUL6d69O5L4zW9+w1e/+lUA+vfvz+OPP84xxxzD1772NTZt2pR35zfAwWFmViN23sMhiWuuuaZ0lFHWuHHjGDduHACNGjXik08+qdUaa4pPjpuZWSoODjMzS8WHqsz2ki9OsPomqyMOSZMkrZD0iqS7JR0gqa2kRZJek3SvpP2Tvo2T5TXJ+oIy+/lZ0v6qpKHZrNnMzCqXteCQ1BqYCBRGRBegIXA2cDVwXUS0B94DxiWbjAPei4hjgOuSfkjqlGzXGRgG3CSpYbbqNjOzymX7HMd+wIGS9gMOAtYD3wTuT9bPAM5IXg9PlknWD5akpP2eiPg0It4E1gC9s1y3mZlVIGvnOCLin5KuBdYCW4DHgSXA+xGxPelWArROXrcG1iXbbpf0AdA8aX++zK7LbmNm9mVXfqWG9/dBze6vCgMHDuTaa6+lsLCQU045hbvuuotmzZrVag2VyeahqkPJjBbaAkcCBwMnl9N15/35qmBdRe27v994SUWSijZs2LBnRZuZ1TFz5sypU6EB2T1UdRLwZkRsiIjPgAeBE4FmyaErgDbAW8nrEuAogGT9V4BNZdvL2aZURNwaEYURUdiyZctsfD9mZhUqLi6mQ4cOnH/++XTp0oVzzjmHuXPn0rdvX9q3b88LL7zAJ598wnnnnUevXr049thjmTVrFgBbtmzh7LPPplu3bowaNYotW7aU7regoIB3332X4uJiunTpUtp+7bXXcuWVVwKZEcqkSZMYMGAAHTt2ZPHixZx11lm0b98+K1O2Z/Ny3LXACZIOInOoajBQBDwNjADuAcYAs5L+s5Plhcn6pyIiJM0G7pI0lczIpT3wQhbrNjPbI2vWrGHmzJnceuut9OrVi7vuuov58+cze/ZsfvWrX9GpUye++c1vctttt/H+++/Tu3dvTjrpJG655RYOOuggli9fzvLlyznuuONSv/f+++/PvHnzuOGGGxg+fDhLlizhsMMO4+ijj2bSpEk0b968xr7PbJ7jWCTpfuBFYDvwEnAr8Ahwj6SrkrbpySbTgT9LWkNmpHF2sp8Vku4DVib7mRARn2erbjOzPdW2bVu6ds3c19O5c2cGDx6MJLp27UpxcTElJSXMnj2ba6+9FoCtW7eydu1a5s2bx8SJEwHo1q0b3bp1S/3ep59+OgBdu3alc+fOHHHEEQC0a9eOdevW5UdwAETEFcAVuzW/QTlXRUXEVmBkBfv5JfDLGi9wH+FndpvVDY0bNy593aBBg9LlBg0asH37dho2bMgDDzzA17/+9S9tm7mItGL77bcfO3bsKF3eunVrue9d9n3LvndN8pQjZma1ZOjQodx4442lz+x46aWXgMxU7HfeeScAr7zyCsuXL//Stq1ateKdd95h48aNfPrppzz88MO1V/huPOWIme17avny2er6+c9/ziWXXEK3bt2ICAoKCnj44Yf5wQ9+wNixY+nWrRs9evSgd+8v36rWqFEjJk+ezPHHH0/btm3p0KFDDr6DDFX0tKp8VlhYGEVFRbkuo/bU9DXrX9p/lv8R5nn9nqsq91atWkXHjh1zXUZeKe9nJmlJRBRWta1HHGb1nIPP0nJwmO0lX5xg9Y1PjpuZWSoODjMzS8XBYWZmqTg4zMwsFZ8cN7N9Tk1fKVadK8OKi4s57bTTeOWVV3Zpnzx5MgMGDOCkk06qcNsrr7ySJk2acOmll+51rbXBwWFmlkVTpkzJdQk1zoeqzMxqyOeff84FF1xA586dGTJkCFu2bOHcc8/l/vszDz2dM2cOHTp0oF+/fkycOJHTTjutdNuVK1cycOBA2rVrx7Rp03L1LVSLg8PMrIa89tprTJgwgRUrVtCsWTMeeOCB0nVbt27lwgsv5G9/+xvz589n9wfOrV69mscee4wXXniBX/ziF3z22We1XX61OTjMzGpI27Zt6dGjBwA9e/akuLi4dN3q1atp164dbdu2BWD06NG7bHvqqafSuHFjWrRoweGHH87bb79da3Wn5eAwM6shZaczb9iw4S7TmVc1L2Bl29Y1Dg4zs1rQoUMH3njjjdJRyL333pvbgvaCr6oys31OXZxY8cADD+Smm25i2LBhtGjRotyp0/OFg8PMrAYUFBTscg9HefdkDBo0iNWrVxMRTJgwgcLCzAzmV1555S79dr8XpK5xcJjVc/k8u+/OG/2u73Q9O97dUUXv9Dq36Fyj+/vDH/7AjBkz2LZtG8ceeywXXnhhje6/tjg4zMxqyaRJk5g0aVKuy9hrPjluZnkviCqvWrIv7O3PysFhZnlv3ZZ1bPtom8OjGiKCjRs3csABB+zxPnyoyszy3h/W/oELuICjDjwKoRrbb4MN++Zn6wMOOIA2bdrs8fYODjPLex99/hFT35xa4/uti5f11gX7ZpyamVnWeMRhOVew9a6s7r84q3s3q3884jAzs1QcHGZmloqDw8zMUvE5DjPLW/k8XUo+84jDzMxScXCYmVkqDg4zM0vFwWFmZqk4OMzMLJWsBoekZpLul7Ra0ipJfSQdJukJSa8lXw9N+krSNElrJC2XdFyZ/YxJ+r8maUw2azYzs8ple8RxA/BoRHQAugOrgJ8CT0ZEe+DJZBngZKB98t944PcAkg4DrgCOB3oDV+wMGzMzq31ZCw5JhwADgOkAEbEtIt4HhgMzkm4zgDOS18OBP0XG80AzSUcAQ4EnImJTRLwHPAEMy1bdZmZWuWyOONoBG4DbJb0k6Y+SDgZaRcR6gOTr4Un/1sC6MtuXJG0VtZuZWQ5kMzj2A44Dfh8RxwKf8MVhqfKU9/SVqKR9142l8ZKKJBVt2LBhT+o1M7NqyGZwlAAlEbEoWb6fTJC8nRyCIvn6Tpn+R5XZvg3wViXtu4iIWyOiMCIKW7ZsWaPfiJmZfSFrwRER/wLWSfp60jQYWAnMBnZeGTUGmJW8ng18P7m66gTgg+RQ1mPAEEmHJifFhyRtZmaWA9me5PA/gDsl7Q+8AYwlE1b3SRoHrAVGJn3nAKcAa4DNSV8iYpOk/wIWJ/2mRMSmLNedV/wgJDOrTVkNjohYChSWs2pwOX0DmFDBfm4DbqvZ6szMbE/4znEzM0vFwWFmZqn4QU5me8nnmKy+8YjDzMxSqTI4JB0sqUHy+t8knS6pUfZLMzOzuqg6I455wAGSWpOZlHAscEc2izIzs7qrOsGhiNgMnAXcGBFnAp2yW5aZmdVV1QoOSX2Ac4BHkjafVDczq6eqExyXAD8DHoqIFZLaAU9ntywzM6urqhw5RMTfgb8nU6ITEW8AE7NdmJmZ1U3Vuaqqj6SVZJ7eh6Tukm7KemVmZlYnVedQ1fVknsK3ESAilpF5sp+ZmdVD1boBMCLW7db0eRZqMTOzPFCdq6PWSToRiGR69Ikkh63MzKz+qc6I49/JTHfemszT+HpQwfTnZma276vOVVXvkrmHw8zMrOrgkNSWzJP8Csr2j4jTs1eWmdUWz+5raVXnHMdfgenAfwM7sluOmVn1OfRyozrBsTUipmW9EjMzywvVCY4bJF0BPA58urMxIl7MWlVmZlZnVSc4ugLfA77JF4eqIlk2M7N6pjrBcSbQLiK2ZbsYMzOr+6pzH8cyoFm2CzEzs/xQnRFHK2C1pMXseo7Dl+OamdVD1QmOK7JehZmZ5Y3qPo/DzMwMqCQ4JM2PiH6SPiJzFVXpKiAi4pCsV2dmZnVOZSOOnU/8a1pLtZiZ1StdZ3TN6v5fHvNyVvZb2VVVUck6MzOrpyobcRwu6UcVrYyIqVmox8zM6rjKgqMh0ITMOQ0zMzOg8uBYHxFTaq0SMzPLC5Wd4/BIw8zMvqSyEcfgWqsix/L1ygYzs1yoMDgiYlNtFmJmVt+8/ObaXJewR6ozyeFekdRQ0kuSHk6W20paJOk1SfdK2j9pb5wsr0nWF5TZx8+S9lclDc12zWZmVrGsBwdwMbCqzPLVwHUR0R54DxiXtI8D3ouIY4Drkn5I6gScDXQGhgE3SWpYC3WbmVk5shocktoApwJ/TJZF5gFQ9yddZgBnJK+HJ8sk6wcn/YcD90TEpxHxJrAG6J3Nus3MrGLZHnFcD/yYL54c2Bx4PyK2J8slQOvkdWtgHUCy/oOkf2l7OduYmVkty1pwSDoNeCcilpRtLqdrVLGusm3Kvt94SUWSijZs2JC6XjMzq55sjjj6AqdLKgbuIXOI6nqgmaSdV3O1Ad5KXpcARwEk678CbCrbXs42pSLi1ogojIjCli1b1vx3Y2ZmQPUe5LRHIuJnwM8AJA0ELo2IcyTNBEaQCZMxwKxkk9nJ8sJk/VMREZJmA3dJmgocCbQHXqjJWvP1kjgzs1zIWnBU4ifAPZKuAl4Cpift04E/S1pDZqRxNkBErJB0H7AS2A5MiIjPa79sMzODWgqOiHgGeCZ5/QblXBUVEVuBkRVs/0vgl9mr0MzMqqs27uMwM7N9iIPDzMxScXCYmVkqDg4zM0vFwWFmZqk4OMzMLBUHh5mZpeLgMDOzVBwcZmaWioPDzMxScXCYmVkquZjk0MzMgIKtd2V1/8VZ2q9HHGZmloqDw8zMUnFwmJlZKg4OMzNLxcFhZmapODjMzCwVX45L/l4SZ2aWCx5xmJlZKg4OMzNLxcFhZmapODjMzCwVB4eZmaXi4DAzs1QcHGZmloqDw8zMUnFwmJlZKg4OMzNLxcFhZmapODjMzCwVB4eZmaXi4DAzs1QcHGZmloqDw8zMUslacEg6StLTklZJWiHp4qT9MElPSHot+Xpo0i5J0yStkbRc0nFl9jUm6f+apDHZqtnMzKqWzRHHduD/RERH4ARggqROwE+BJyOiPfBksgxwMtA++W888HvIBA1wBXA80Bu4YmfYmJlZ7ctacETE+oh4MXn9EbAKaA0MB2Yk3WYAZySvhwN/iozngWaSjgCGAk9ExKaIeA94AhiWrbrNzKxytXKOQ1IBcCywCGgVEeshEy7A4Um31sC6MpuVJG0VtZuZWQ5kPTgkNQEeAC6JiA8r61pOW1TSvvv7jJdUJKlow4YNe1asmZlVKavBIakRmdC4MyIeTJrfTg5BkXx9J2kvAY4qs3kb4K1K2ncREbdGRGFEFLZs2bJmvxEzMyuVzauqBEwHVkXE1DKrZgM7r4waA8wq0/795OqqE4APkkNZjwFDJB2anBQfkrSZmVkO7JfFffcFvge8LGlp0vZ/gV8D90kaB6wFRibr5gCnAGuAzcBYgIjYJOm/gMVJvykRsSmLdZuZWSWyFhwRMZ/yz08ADC6nfwATKtjXbcBtNVedmZntKd85bmZmqTg4zMwsFQeHmZml4uAwM7NUHBxmZpaKg8PMzFJxcJiZWSoODjMzS8XBYWZmqTg4zMwsFQeHmZml4uAwM7NUHBxmZpaKg8PMzFJxcJiZWSoODjMzS8XBYWZmqTg4zMwsFQeHmZml4uAwM7NUHBxmZpaKg8PMzFJxcJiZWSoODjMzS8XBYWZmqTg4zMwsFQeHmZml4uAwM7NUHBxmZpaKg8PMzFJxcJiZWSoODjMzS8XBYWZmqTg4zMwsFQeHmZmlkjfBIWmYpFclrZH001zXY2ZWX+VFcEhqCPwOOBnoBIyW1Cm3VZmZ1U95ERxAb2BNRLwREduAe4DhOa7JzKxeypfgaA2sK7NckrSZmVktU0TkuoYqSRoJDI2I85Pl7wG9I+I/yvQZD4xPFr8OvJrFkloA72Zx/9nm+nPL9edOPtcO2a//axHRsqpO+2WxgJpUAhxVZrkN8FbZDhFxK3BrbRQjqSgiCmvjvbLB9eeW68+dfK4d6k79+XKoajHQXlJbSfsDZwOzc1yTmVm9lBcjjojYLumHwGNAQ+C2iFiR47LMzOqlvAgOgIiYA8zJdR2JWjkklkWuP7dcf+7kc+1QR+rPi5PjZmZWd+TLOQ4zM6sjHBxmZpZK3pzjyCVJHcjcqd4aCDKXAs+OiFU5LczqPEm9gYiIxck0OcOA1ck5u7wj6U8R8f1c12G55XMcVZD0E2A0mWlOSpLmNmQuCb4nIn6dq9rqiyS4WwOLIuLjMu3DIuLR3FVWOUlXkJlfbT/gCeB44BngJOCxiPhl7qqrmqTdL3kXMAh4CiAiTq/1ovaCpH5kpi96JSIez3U9VZF0PLAqIj6UdCDwU+A4YCXwq4j4IGe1OTgqJ+kfQOeI+Gy39v2BFRHRPjeV7T1JYyPi9lzXURlJE4EJwCqgB3BxRMxK1r0YEcflsr7KSHqZTM2NgX8Bbcr8EVgUEd1yWmAVJL1I5o/UH8mMtAXcTeZDExHx99xVVzVJL0RE7+T1BWR+jx4ChgD/Xdc/9ElaAXRPbke4FdgM3A8MTtrPylVtPlRVtR3AkcD/7NZ+RLIun/0CqNPBAVwA9IyIjyUVAPdLKoiIG8j8IavLtkfE58BmSa9HxIcAEbFFUj787hQCFwP/CVwWEUslbanrgVFGozKvxwPfiogNkq4FngfqdHAADSJie/K6sMyHpPmSluaqKHBwVMclwJOSXuOLiRb/F3AM8MOcVVVNkpZXtApoVZu17KGGOw9PRUSxpIFkwuNr1P3g2CbpoIjYDPTc2SjpK+TBh46I2AFcJ2lm8vVt8utvRgNJh5K5CEgRsQEgIj6RtL3yTeuEV8ocFVgmqTAiiiT9G/BZVRtnUz79EuRERDya/I/qTeY4u8ic61icfJqs61oBQ4H3dmsX8Fztl5PavyT1iIilAMnI4zTgNqBrbkur0oCI+BRK/wjv1AgYk5uS0ouIEmCkpFOBD3NdTwpfAZaQ+V0PSV+NiH9JakLd/9ABcD5wg6TLyUxsuFDSOjIfYM/PZWE+x7GPkzQduD0i5pez7q6I+G4Oyqo2SW3IHPL5Vznr+kbEghyUZXlM0kFAq4h4M9e1VIekpkA7Mh/0SyLi7RyX5OAwM7N0fAOgmZml4uAwM7NUHBxW70m6UtKlWX6PDpKWSnpJ0tHZfK8y7/mMpJw/9Mf2PQ4Os9pxBjArIo6NiNdzXYzZ3nBwWL0k6T8lvSppLpln1CPpAkmLJS2T9ICkgyQ1lfSmpEZJn0MkFe9cLme/PSQ9L2m5pIckHSrpFDL3A50v6ekKtvtxcpc8kq6T9FTyerCkvySvh0haKOlFSTOTy0qR1FPS3yUtkfSYpCN223cDSTMkXVUjPzyr9xwcVu9I6klm2oxjgbOAXsmqByOiV0R0JzPFybiI+IjM/FKnJn3OBh7YfQqaMv4E/CSZTuRl4IpkQsObgesiYlAF280D+ievC4EmSTj1A56V1AK4HDgpuYO4CPhR0udGYERE9CRzf0vZObD2A+4E/hERl1fjx2NWJd8AaPVRf+Ch5I7uspP5dUk+lTcDmpB5VDFk5mr6MfBXYCyZaVC+JLkjvFmZKTlmADOrWdMSoGdyzf6nwItkAqQ/MBE4AegELJAEsD+wkMxoqQvwRNLeEFhfZr+3APfV9QkVLb84OKy+Ku8GpjuAMyJimaRzgYEAEbFAUoGkb5CZAuWVGi8m4jNJxWSC6TlgOZmZaI8mM/o5GngiIkaX3U5SVzKTbfapYNfPAYMk/b+I2FrTdVv95ENVVh/NA86UdGDyCf9/J+1NgfXJ4Z9zdtvmT2Rmhq1wUshkmuv3JO085PQ9IM2EgPOAS5OvzwL/DiyNzF26zwN9JR0Dmbufk6lwXgVaSuqTtDeS1LnMPqcDc4CZkvxB0WqEg8PqnYh4EbgXWAo8QOaPNMDPgUVknp2xerfN7gQOJRMelRkDXJNMLtkDmJKitGfJzLq8MJlWYuvO2pIJ+s4F7k72/TzQISK2ASOAqyUtS76nE3f7fqeSOfT1Z0n+N297zVOOmFWDpBHA8Ij4Xq5rMcs1D13NqiDpRjJP8jsl17WY1QUecZjtAUm/A/ru1nxDVU9UlNQceLKcVYMjYmNN1WeWTQ4OMzNLxSfKzMwsFQeHmZml4uAwM7NUHBxmZpaKg8PMzFL5/99SKZgc98ndAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x439d49b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#提取小时信息\n",
    "train['day_of_week'] = train['created'].dt.dayofweek\n",
    "test['day_of_week'] = test['created'].dt.dayofweek\n",
    "dowIn = train.groupby(['day_of_week', 'interest_level'])['day_of_week'].count().unstack('interest_level').fillna(0)\n",
    "dowIn[['low','medium',\"high\"]].plot(kind='bar', stacked=True);\n",
    "plt.ylabel(\"Times\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看出周一，周日去看房的人少，周三人特别多"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "因为都在2016年，所以没必要把年这个因素考虑进去，处理时把月份和每个星期几给考虑进去"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(8) building_id 和 Manager_id"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0                                   8286\n",
       "96274288c84ddd7d5c5d8e425ee75027     275\n",
       "11e1dec9d14b1a9e528386a2504b3afc     215\n",
       "80a120d6bc3aba97f40fee8c2204524b     213\n",
       "bb8658a3e432fb62a440615333376345     212\n",
       "f68bf347f99df026f4faad43cc604048     191\n",
       "c94301249b8c09429d329864d58e5b82     167\n",
       "ce6d18bf3238e668b2bf23f4110b7b67     165\n",
       "57ef86c28a8ae482dc3a3c3af28e8e48     159\n",
       "128d4af0683efc5e1eded8dc8044d5e3     153\n",
       "d0234abbc01a982d54e8d446acc03405     152\n",
       "9c18bf871b97492b96d8ddb800591f1b     147\n",
       "8e3b8c607c3edcf3de131c24f0390179     141\n",
       "cb14c4f807f23ecee1f7469b5159d2de     141\n",
       "ea9045106c4e1fe52853b6af941f1c69     139\n",
       "7967a1280bf3f7644500fc79d2696b0e     133\n",
       "a01c99eb2cfdde327e1691e17d6696ba     131\n",
       "093f64f52a6e43ba5e8f12bec8200554     128\n",
       "18f6eb16d2f3e9885cb4a5d0a40791c6     127\n",
       "5565db9b7cba3603834c4aa6f2950960     126\n",
       "dd7b281c0dbafc8b53575ab78cca75d4     125\n",
       "3a956bd42c50f06ac84cf072fc514f5f     123\n",
       "6ce872b483cfcbb32ea805604d44ef5f     120\n",
       "ec12b4db154a9c75983f5e32edd93843     116\n",
       "aed67db466854ec2aa5d249a032bc401     115\n",
       "93cd24891f8423d45ac587ab1fdb1225     115\n",
       "80911ce8a425daf4989ea8a4bccc41a7     112\n",
       "1be9c496f7bdff4a552e3d4e91f915f8     111\n",
       "300d27d8ba2adbcbc8c6f2bcbc1c6f9d     110\n",
       "c40e3e74475a91aae1928541be8df678     108\n",
       "                                    ... \n",
       "33cca3b97f160e810ad6eb42cffaa21a       1\n",
       "1099d8e3ffa60a11e2e1f26da0842449       1\n",
       "b4031252b657fd2fc084630e68b1b3fa       1\n",
       "f51f18bb78d6a273b4fc4ae463f43489       1\n",
       "e5ff4d31705cd6c3461f245a52b220e6       1\n",
       "6af77af3d5967af7daa63525daa4bd64       1\n",
       "2955e5c701fefcbc21f8499b11192491       1\n",
       "a1f7152353d601e95c8427c3018a59a5       1\n",
       "f17dfbe9d5875eb91c6779f5ef89ebeb       1\n",
       "db9a287a3e6deeb701d3beddc1a13a73       1\n",
       "99cd3ab650b55fc4d92da7b5c336f2c6       1\n",
       "8d4e10c66dd669a62605cff1479ede86       1\n",
       "824230180acac7b032b314a5e33a1170       1\n",
       "444dba0cee8c32fb3f698921392384ac       1\n",
       "5254efa5f491d2a610b43939c37173d8       1\n",
       "182d9d30e6ff14498784db1c942edd4a       1\n",
       "16b2e9f34ada4151d7ac2053926c40ca       1\n",
       "05e26e72ebec9d1d7612a476fe03e3b3       1\n",
       "4632a0fae47fcfb4c3a12028bfe1cdbb       1\n",
       "01e23bdc82cbdb20a15d290c02572a5d       1\n",
       "317cec28f08ef5594798d3bcc371c11e       1\n",
       "86be60a2141f9252eb3a341e59f513db       1\n",
       "539920b680615f9238547fa351e04b5f       1\n",
       "4c0d67411a83bba185483dbecbf9c8b6       1\n",
       "79d92329728ca1a0899f2fe46acc1999       1\n",
       "5183c977ce9b4b726c522f304574327b       1\n",
       "21e1673766b319f6e9ecf47598a6c339       1\n",
       "19939c8051e710b70d6f5d77413e57cb       1\n",
       "53e9b36b237013ef36fce011ae689e03       1\n",
       "6cb8e72cde2b2897468dd710b1488ada       1\n",
       "Name: building_id, Length: 7585, dtype: int64"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train[\"building_id\"].value_counts().sort_values(ascending = False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "e6472c7237327dd3903b3d6f6a94515a    2533\n",
       "6e5c10246156ae5bdcd9b487ca99d96a     711\n",
       "8f5a9c893f6d602f4953fcc0b8e6e9b4     410\n",
       "62b685cc0d876c3a1a51d63a0d6a8082     402\n",
       "cb87dadbca78fad02b388dc9e8f25a5b     373\n",
       "9df32cb8dda19d3222d66e69e258616b     330\n",
       "b7de4cb395920136663132057fa89d84     320\n",
       "2aa9bfa5f67ed9997ea341dee8a3a271     316\n",
       "ad3d8ddc52c7e0859b5c6c7f7949c3bd     305\n",
       "c9c33695ee2a2f818e9f1d8f7d1c4b39     299\n",
       "1fb46c4a72bcf764ac35fc23f394760d     289\n",
       "d2bce61e0e0079ebdc8c281e415e045b     276\n",
       "5599e962719af3ccc2976855c2d5893c     256\n",
       "aa9e353a6b43b125cbc89cb751090a9e     246\n",
       "62826f3ae01f2ddc93b9cd28c659ab2b     233\n",
       "8b53ccf4338806ab1be3dd0267711649     222\n",
       "612a00076aefe8c98d1df4835640c74b     214\n",
       "dbbb6b990661b1e507a387f019bcb1a0     212\n",
       "b209e2c4384a64cc307c26759ee0c651     210\n",
       "8262449f40e9117f7a9ea49b4a333993     210\n",
       "fc81b75568d3655a922523cb0d77ea5b     206\n",
       "d1737922fe92ccb0dc37ba85589e6415     198\n",
       "1067e078446a7897d2da493d2f741316     191\n",
       "501b52559fd21b32808030a0f4fb1a26     170\n",
       "02e17b21a1814fb10336b2ee8ceb3e79     170\n",
       "381040570cc863b743a9fce1a6ae9724     169\n",
       "30a7951cfc21240e8c46b2d079d292e5     169\n",
       "eb5a6c4c2eb6f3e2a085c477afd5a815     168\n",
       "d399821d8583b8421a55370c6eb15f6f     167\n",
       "9d32b720e26a351b951c8f78f72f2fec     164\n",
       "                                    ... \n",
       "7d986792cfe302049c43d5942f1a6aaa       1\n",
       "2e9e34183c919c5a507d787ee866bc2b       1\n",
       "069746ea6c695b180bc0f74904cf48aa       1\n",
       "1f286bebfce89e810809880775f11a26       1\n",
       "8feed9fdc59f35cb4e9fc881a191c645       1\n",
       "f6d5173029809f4b1868c662aa7b3fe8       1\n",
       "dd79fa83a023f2589c4df9e29b886d41       1\n",
       "7bf4502f383da71e9e7a73233284f9f1       1\n",
       "6d4e68a89e795f9a1dce1f9feca5fae0       1\n",
       "0d64e795d2902bce6179009a25e37bbe       1\n",
       "c315f8db6de5702709aba56e33571748       1\n",
       "3103f9cb753e4c84725c2296898088f2       1\n",
       "c598a7b2d75ee91bf45d5c7c9efb7abb       1\n",
       "cd5b0613813693abc1ab97fe19289f65       1\n",
       "20206fee9953bc0af56c0d0e0a8b2cb3       1\n",
       "b007bea47ae39f66ca6f3032cf596445       1\n",
       "28f5cb43c4080f10bf30ca9e09e23608       1\n",
       "b37edf3800e76cff333f263a452a75b4       1\n",
       "95ffa76d2c1890ba8a7f4a9378802efa       1\n",
       "4ad7b3f607fcb9a1fa05ea10c59e7960       1\n",
       "4c2fdcf5e8a3b3fe9f5d22e83392dd26       1\n",
       "8916c29c37624031e94dda5389146d54       1\n",
       "b0a70790c83113c9af9b31137f9e1c9c       1\n",
       "f7f6aa2bea667b91bd9d8fae047b3b1f       1\n",
       "80ea438704e161b840a040f4b60c01ef       1\n",
       "13bfb7b515ad9294261b9bcf8a532280       1\n",
       "89f8c4edcdbfff8b1101300774422ac3       1\n",
       "24ec589f35b1988b6a3f7a06ea7389af       1\n",
       "8c7ef1029e22c38d2de9a1133abbab6a       1\n",
       "3fffe20e7dd4c6016b4dd25f7bd0d7c0       1\n",
       "Name: manager_id, Length: 3481, dtype: int64"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train['manager_id'].value_counts().sort_values(ascending = False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看出 有些房子是同一个manager管理的， 有很多房子都属于同一栋。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x249079b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data_corr = train.corr()\n",
    "plt.subplots(figsize=(30, 30))\n",
    "sns.heatmap(data_corr,annot=True)\n",
    "# Mask unimportant features\n",
    "sns.heatmap(data_corr, mask=data_corr < 1, cbar=False)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.数据预处理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "整体思路，如何处理这些特征值\n",
    "\n",
    "(1) building_id, manager_id 可以知道有不同房产是出自那些建筑物和经理人的。可能有些经理人比较厉害人们就对他代理的房屋的感兴趣程度较高。或者那几个建筑物各方面因素比较好，造成了人们对它那里感兴趣。manager_id 按照销售排名进行划分，building_id 删除因为有房子都在一栋里面\n",
    "\n",
    "(2) photos 只能统计张数 根据张数来进行分类\n",
    "\n",
    "(3) features,description 应该要取寻找感兴趣的哪些词频出现的比较多的，但是现在不会，就统计他们的条数\n",
    "\n",
    "(4) 时间，就是星期几和月份\n",
    "\n",
    "(5) display_address 与 street_address 紧密相关 但感觉经纬度更能表现，所以都删去\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "train[\"num_photos\"] = train[\"photos\"].apply(len)\n",
    "test[\"num_photos\"] = test[\"photos\"].apply(len)\n",
    "train[\"num_description\"] = train[\"description\"].apply(lambda x: len(x.split(\" \")))\n",
    "test[\"num_description\"] = test[\"description\"].apply(lambda x: len(x.split(\" \")))\n",
    "train[\"num_features\"] = train[\"features\"].apply(len)\n",
    "test[\"num_features\"] = test[\"features\"].apply(len)\n",
    "#按照区间来划分manager 特征值\n",
    "proceess_manager_id(train)\n",
    "proceess_manager_id(test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "dropColumns =['photos','features','description','display_address','street_address','building_id','manager_id',\"created\",\"date_created\"]\n",
    "train = train.drop(columns=dropColumns)\n",
    "test = test.drop(columns=dropColumns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "#打乱顺序\n",
    "train = train.sample(frac = 1) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "把特征值、目标值分离，listing_id 拿出来保存着到时候备用，用来当Id用"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train = train['interest']\n",
    "x_train = train.drop(columns=['interest_level','interest','listing_id'])\n",
    "x_test =  test.drop(columns='listing_id')\n",
    "list_test = test['listing_id']\n",
    "#电脑性能不好，跑多了跑不完，只能选一部分跑了\n",
    "y_train = y_train[:8000]\n",
    "x_train = x_train[:8000]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "#热编码不能对浮点数编码，所以卫浴室与卧室都乘以2 保持一致\n",
    "x_train['bathrooms']=x_train['bathrooms'].apply(lambda x:int(2*x))\n",
    "x_train['bedrooms']=x_train['bedrooms'].apply(lambda x:2*x)\n",
    "x_test['bathrooms']=x_test['bathrooms'].apply(lambda x:int(2*x))\n",
    "x_test['bedrooms']=x_test['bedrooms'].apply(lambda x:2*x)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "连续值进行标准化，离散值进行编码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "continuity_fields = ['latitude','price','longitude','num_description','num_features','num_photos']\n",
    "#数值型特征归一化以及分类型特征编码同时处理\n",
    "n_x= preprocessing.StandardScaler()\n",
    "enc_x = preprocessing.OneHotEncoder()\n",
    "\n",
    "#分离离散值与连续值\n",
    "continuousTrainData_x = x_train.loc[:, continuity_fields]\n",
    "continuousTestData_x = x_test.loc[:, continuity_fields]\n",
    "distributiveTrainData_x = x_train.drop(columns = continuity_fields)\n",
    "distributiveTestData_x = x_test.drop(columns = continuity_fields)\n",
    "\n",
    "#归一化连续特征值\n",
    "standardConTrainData_x = n_x.fit_transform(continuousTrainData_x)\n",
    "standardConTestData_x = n_x.fit_transform(continuousTestData_x)\n",
    "\n",
    "totalEncode = distributiveTrainData_x.append(distributiveTestData_x)\n",
    "#亚编码离散特征值\n",
    "enc_x.fit_transform(totalEncode)\n",
    "normalDesTrainData_x = enc_x.transform(distributiveTrainData_x).toarray()\n",
    "normalDesTestData_x = enc_x.transform(distributiveTestData_x).toarray()\n",
    "\n",
    "\n",
    "#组合特征值\n",
    "new_x_train = np.concatenate((normalDesTrainData_x,standardConTrainData_x),axis=1)\n",
    "new_x_test = np.concatenate((normalDesTestData_x,standardConTestData_x),axis=1)\n",
    "new_y_train = y_train.values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\cross_validation.py:41: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.\n",
      "  \"This module will be removed in 0.20.\", DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "# 采用sklearn的分割函数\n",
    "from sklearn.cross_validation import train_test_split\n",
    "# 分割比率20%\n",
    "train_x, test_x, train_y, test_y = train_test_split(new_x_train, new_y_train, test_size=0.20) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 6. 模型训练集评估"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 6.1 logistic 回归通过gridSearchCV 寻找最佳参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "\n",
    "#需要调优的参数\n",
    "# 请尝试将L1正则和L2正则分开，并配合合适的优化求解算法（slover）\n",
    "tuned_parameters={'penalty':['l1','l2'],'C':[0.01,0.03,0.05,0.07,0.1,0.3,0.5,0.7,0.8,0.9,1,1.5,3,5,7,10,20,50,70,100], 'solver':['liblinear'],'multi_class':['ovr']}  \n",
    "\n",
    "lr_penalty= LogisticRegression(tol=1e-6,class_weight=\"balanced\",random_state = 20)\n",
    "grid= GridSearchCV(lr_penalty, tuned_parameters,cv=5, scoring='neg_log_loss')\n",
    "grid.fit(train_x,train_y)\n",
    "\n",
    "# 获得预测值\n",
    "lr_predict_test =grid.predict(test_x)\n",
    "lr_predict_train = grid.predict(train_x)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 6.2 logistic 回归 模型评估"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "26\n",
      "{'penalty': 'l1', 'multi_class': 'ovr', 'C': 5, 'solver': 'liblinear'}\n",
      "LogisticRegression(C=5, class_weight='balanced', dual=False,\n",
      "          fit_intercept=True, intercept_scaling=1, max_iter=100,\n",
      "          multi_class='ovr', n_jobs=1, penalty='l1', random_state=20,\n",
      "          solver='liblinear', tol=1e-06, verbose=0, warm_start=False)\n",
      "0.7929124601049102\n"
     ]
    }
   ],
   "source": [
    "print grid.best_index_\n",
    "print grid.best_params_\n",
    "print grid.best_estimator_ \n",
    "print -grid.best_score_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "负log-loss 是-0.79 还是比较大"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('best params for logistic regression: ', {'penalty': 'l1', 'multi_class': 'ovr', 'C': 5, 'solver': 'liblinear'})\n",
      "('best neg lose for logistic regression: ', 0.7929124601049102)\n",
      "confusion matrix:\n",
      "[[936  89  77]\n",
      " [224  67  71]\n",
      " [ 55  23  58]]\n",
      "regression report:\n",
      "             precision    recall  f1-score   support\n",
      "\n",
      "          0    0.77037   0.84936   0.80794      1102\n",
      "          1    0.37430   0.18508   0.24769       362\n",
      "          2    0.28155   0.42647   0.33918       136\n",
      "\n",
      "avg / total    0.63921   0.66312   0.64134      1600\n",
      "\n",
      "accuracy score for train data: 0.66656\n",
      "accuracy score for test data: 0.66312\n"
     ]
    }
   ],
   "source": [
    "print(\"best params for logistic regression: \",grid.best_params_)\n",
    "print(\"best neg lose for logistic regression: \",-grid.best_score_)\n",
    "print(\"confusion matrix:\")\n",
    "print(metrics.confusion_matrix(test_y, lr_predict_test) )\n",
    "print(\"regression report:\")\n",
    "print(metrics.classification_report(test_y, lr_predict_test, digits=5))\n",
    "print(\"accuracy score for train data: {0:.5f}\".format(metrics.accuracy_score(train_y, lr_predict_train)))\n",
    "print(\"accuracy score for test data: {0:.5f}\".format(metrics.accuracy_score(test_y, lr_predict_test)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "最佳参数C值为5，L1正则，准确率测试集合训练集都差不多 0.66左右"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0,0.5,u'neg-logloss')"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x3c3d8780>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot CV误差曲线\n",
    "test_means = grid.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = grid.cv_results_[ 'std_test_score' ]\n",
    "train_means = grid.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = grid.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "\n",
    "# plot results\n",
    "n_Cs = len(tuned_parameters['C'])\n",
    "number_penaltys = len(tuned_parameters['penalty'])\n",
    "test_scores = np.array(test_means).reshape(n_Cs,number_penaltys)\n",
    "train_scores = np.array(train_means).reshape(n_Cs,number_penaltys)\n",
    "test_stds = np.array(test_stds).reshape(n_Cs,number_penaltys)\n",
    "train_stds = np.array(train_stds).reshape(n_Cs,number_penaltys)\n",
    "x_axis = np.log10(tuned_parameters['C'])\n",
    "\n",
    "for i, value in enumerate(tuned_parameters['penalty']):\n",
    "    plt.errorbar(x_axis, -test_scores[:,i] ,label = tuned_parameters['penalty'][i] +' Test')\n",
    "    plt.errorbar(x_axis, -train_scores[:,i],label = tuned_parameters['penalty'][i] +' Train')\n",
    "\n",
    "plt.legend()\n",
    "plt.xlabel( 'log(C)' )                                                                                                      \n",
    "plt.ylabel( 'neg-logloss' )\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "测试集、训练集 L1 L2 正则 neg-logloss 与 C的log取值的曲线图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x3bfc22e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(x_axis, -test_scores[:,1], 'b-')\n",
    "plt.xlabel( 'log(C)' )                                                                                                      \n",
    "plt.ylabel( 'neg-logloss' )\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "预测的曲线"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 6.3. 线性SVM参数搜索"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 载入库包\n",
    "from sklearn.svm import LinearSVC\n",
    "\n",
    "tuned_parameters_svc= {'penalty':['l2'],'C':[0.01,0.05,0.1,0.5,0.7,1,1.5,3,5,7,10,20,50,100,500,1000],'loss':['hinge']}\n",
    "grid_svc=GridSearchCV(LinearSVC(tol=1e-7,class_weight=\"balanced\", random_state=42),tuned_parameters_svc) \n",
    "grid_svc.fit(train_x,train_y)\n",
    "svc_predict_test =grid_svc.predict(test_x)\n",
    "svc_predict_train =grid_svc.predict(train_x)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 6.4 线性SVM模型评估"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('best params for Linear SVC: ', {'penalty': 'l2', 'loss': 'hinge', 'C': 0.01})\n",
      "('best score for Linear SVC: ', 0.67015625)\n",
      "confusion matrix:\n",
      "[[1000    0  102]\n",
      " [ 277    0   85]\n",
      " [  76    0   60]]\n",
      "regression report:\n",
      "             precision    recall  f1-score   support\n",
      "\n",
      "          0    0.73910   0.90744   0.81466      1102\n",
      "          1    0.00000   0.00000   0.00000       362\n",
      "          2    0.24291   0.44118   0.31332       136\n",
      "\n",
      "avg / total    0.52970   0.66250   0.58773      1600\n",
      "\n",
      "accuracy score for train data: 0.66719\n",
      "accuracy score for test data: 0.66250\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\metrics\\classification.py:1135: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples.\n",
      "  'precision', 'predicted', average, warn_for)\n"
     ]
    }
   ],
   "source": [
    "print(\"best params for Linear SVC: \",grid_svc.best_params_)\n",
    "print(\"best score for Linear SVC: \",grid_svc.best_score_)\n",
    "print(\"confusion matrix:\")\n",
    "print(metrics.confusion_matrix(test_y, svc_predict_test) )\n",
    "print(\"regression report:\")\n",
    "print(metrics.classification_report(test_y, svc_predict_test, digits=5))\n",
    "print(\"accuracy score for train data: {0:.5f}\".format(metrics.accuracy_score(train_y, svc_predict_train)))\n",
    "print(\"accuracy score for test data: {0:.5f}\".format(metrics.accuracy_score(test_y, svc_predict_test)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "最佳参数正则项L2,C值为0.01，准确率测试集合训练集都差不多 0.66左右 与 logistic 回归结果没有太大区别。。。。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0,0.5,u'accuracy')"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x3c5e35c0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot CV误差曲线\n",
    "test_means = grid_svc.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = grid_svc.cv_results_[ 'std_test_score' ]\n",
    "train_means = grid_svc.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = grid_svc.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "\n",
    "# plot results\n",
    "n_Cs = len(tuned_parameters_svc['C'])\n",
    "number_penaltys = len(tuned_parameters_svc['penalty'])\n",
    "test_scores = np.array(test_means).reshape(n_Cs,number_penaltys)\n",
    "train_scores = np.array(train_means).reshape(n_Cs,number_penaltys)\n",
    "test_stds = np.array(test_stds).reshape(n_Cs,number_penaltys)\n",
    "train_stds = np.array(train_stds).reshape(n_Cs,number_penaltys)\n",
    "x_axis = np.log10(tuned_parameters_svc['C'])\n",
    "\n",
    "for i, value in enumerate(tuned_parameters_svc['penalty']):\n",
    "    #pyplot.plot(log(Cs), test_scores[i], label= 'penalty:'   + str(value))\n",
    "    plt.errorbar(x_axis, test_scores[:,i] ,label = tuned_parameters_svc['penalty'][i] +' Test')\n",
    "    plt.errorbar(x_axis, train_scores[:,i] ,label = tuned_parameters_svc['penalty'][i] +' Train')\n",
    "\n",
    "\n",
    "plt.legend()\n",
    "plt.xlabel( 'log(C)' )                                                                                                      \n",
    "plt.ylabel( 'accuracy' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEKCAYAAADjDHn2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XmcXFWd9/HPNxuBEAKYhCUEEyAREgggzRq2JF0SREDEB4iiIIPgsMmI+ICgII4yjDM+40hQWUd9qayyKEjIRghCJB0JgRCWEEVaQELCFraE5Pf8caonTaeTqu6uW7e76/t+vepVVbfvrfoVpOvb55x7z1FEYGZmtiE98i7AzMw6P4eFmZmV5LAwM7OSHBZmZlaSw8LMzEpyWJiZWUkOCzMzK8lhYWZmJTkszMyspF55F1ApAwcOjGHDhuVdhplZlzJv3rxXI2JQqf26TVgMGzaMhoaGvMswM+tSJD1fzn7uhjIzs5IcFmZmVpLDwszMSnJYmJlZSQ4LMzMryWFhZmYlOSzMzKykmg+LNWvg/PPh2WfzrsTMrPOq+bBYvBiuvRZ23x1+9KMUHmZm9mE1HxYjR8LChTB+PJx7LowbB889l3dVZmadS82HBcC228Lvfgc33ACPPQZjxsCVV7qVYWbWxGFRJMHJJ8MTT8DBB8PZZ8OECbBkSd6VmZnlz2HRwnbbwT33wHXXwZ//nFoZV13lVoaZ1TaHRSskOOWU1MoYOxbOPBMKBfjrX/OuzMwsHw6LDRg6FO69F665BubOhd12g5/9DCLyrszMrLocFiVIcOqpqZWx337wla/AJz4Bz5c1A7yZWffgsCjT9tvDfffBT38Kc+akVsY117iVYWa1wWHRBhKcfjo8/jjsvTecdhocfji88ELelZmZZcth0Q7DhsHUqTB5Mjz4IOy6azp7yq0MM+uuHBbt1KMHnHEGLFgAe+6ZxjU++UlobMy7MjOzynNYdNAOO8CMGfDjH8MDD6RWxv/8j1sZZta9OCwqoEcPOOus1MoYMwa+9CU48kh48cW8KzMzqwyHRQXtuCPcf3+avXbGDBg9Gn75S7cyzKzrc1hUWI8ecM45aULC0aPhi1+Eo4+Gl17KuzIzs/ZzWGRkxAiYNQt++MN05tTo0fCrX7mVYWZdU6ZhIWmipKclLZZ0wXr2OU7Sk5IWSvp1s+3bS7pP0qLiz4dlWWsWevaEf/kXmD8fdt4ZTjwRPvMZePnlvCszM2ubzMJCUk9gMnA4MAqYJGlUi31GABcCYyNiNHBusx//AvhBROwC7AO8klWtWfvYx2D2bPjBD+APf0itjN/8xq0MM+s6smxZ7AMsjoglEbESuBE4usU+XwYmR8RrABHxCkAxVHpFxNTi9hUR8U6GtWauZ0/4+tdTK2PECPjc5+Czn4VXumwEmlktyTIshgDNJ8JoLG5rbiQwUtIfJc2RNLHZ9tcl/VbSo5J+UGypfIik0yQ1SGpYunRpJh+i0nbeOV31fcUVcPfdqZVx8815V2VmtmFZhoVa2day46UXMAI4FJgEXCtp8+L2g4CvA3sDOwAnr/NiEVdHRF1E1A0aNKhylWesVy/4xjfS4krDh8Pxx8Nxx0EXyTuzinrvvTRdzvz5eVdiG5JlWDQCQ5s93w5oeZlaI3BnRKyKiL8AT5PCoxF4tNiF9QFwB/DxDGvNxahR8NBDcPnlcOedqZVx2215V2VWHStXwk9+AjvtlKbLOfBAmDkz76psfbIMi7nACEnDJfUBTgDuarHPHcA4AEkDSd1PS4rHbiGpqbkwHngyw1pz06sXXHABzJuXpkH/7GfhhBPg1VfzrswsG6tWpZbEyJFpfrVhw9IfSR/9aJpf7e67867QWpNZWBRbBGcBU4BFwM0RsVDSZZKOKu42BVgm6UlgJnB+RCyLiNWkLqjpkh4ndWldk1WtncGuu8LDD8O//iv89replXH77XlXZVY5q1enGQ122SW1JAYPTitRzp6dTimfNSu1tj/9aY/jdUaKbnL+Zl1dXTQ0NORdRkUsWAAnnwyPPgqTJqVJCj/ykbyrMmufNWvgllvg0kvhqadgjz3gssvgU59Ka8Q098YbcMQR6Q+na66BU07JpeSaImleRNSV2s9XcHdCY8bAn/4E3/lO+iUbPTqNaZh1JRGpdbzHHqlrtWdPuPXW1OV65JHrBgXAgAEwZQrU18M//VOaZ806B4dFJ9W7N3z729DQANtsk5rmX/gCLF+ed2VmGxaRxh3q6lL30vvvw69/neZLO/bYNH/ahvTrB3fdBcccA+eem7pmu0kHSJfmsOjkdt89tTIuuQRuvBGGDIG99oKTToJ///f0S/n88/5lsvxFpHnQ9t8/dTG9/npa22XhwtSd2nOdK6XWb6ON0rjFiSfCt76VTgLxv/F89cq7ACutT5/U3/vpT8PPf55++aZNg1/8Yu0+m26aBgd33TV1W40enR5vu23rzX2zSpo1K32pz54NQ4fC1Vencbfevdv/mr16pX/vm26a/jB68820lHGplollw2HRheyxR7o1ee21FBxNtyeegN//Hq6/fu0+AwZ8ODyaHm+1lUPEOu7hh1NITJ+euksnT05jDRttVJnX79EDrroK+vdPc6utWAE33JCCxKrL/8m7sC22SBcyHXjgh7e/+ura8GgKkttuS2eXND928OB0v/nm6b7ptqHn/fv7LztLY2nf/naaGHPw4DQV/1e+AhtvXPn3ktL0OAMGwMUXw9tvp4k4KxVIVh6HRTc0cCAccki6NYmAf/xjbXg89RQsW5ZaJ8uWweLF6fHrr6fz4denR48UHm0JmKbbgAH+i7Cre+yxFBJ33ZVO577iCjjzzDQonSUJLroodUmdey4cdVS6Hinr97W1/KtbIyTYeut0mzBh/ftFwFtvpdB47bW1t5bPm29rbFy7beXKDdfRv/+GA6W10Nlyy/S4T5/K/jex8j35ZBo3u+WWFPrf/W5aEXKzzapbx1e/mv4NnXoqTJyYul0HDKhuDbXKYWEfIqUvgM02S9OPtNW77244ZFo+X7x47ba3397wa2+66drg2HLLD99KtWjaciZOOSJS//krr6Tb0qXrPl66NH2uvn1T7U23fv1KPx8wYO3nyrM1tnRpGpO45ppU17e+BV/7WvrvnJdTTkm1nHhi+sPn3ntTa9qy5bCwitp443Tbdtu2H7ty5drgaB4qy5eve798OSxatPZxqRbNZpulL97NNktfxC1vLbdLrQdA88fvv9/6e/Xvn/rxBw1Kt/feSzX+7W8pYFasSMG4vuNbq715KDY9PvHEdcerKmXlSrjyynSl9dtvw9lnp6DoLDMJHH98CtZjj03drVOntu/fnJXP031YlxdRfovmjTfS7c031z5+4400ud369O2bzh4bNCiFQFMQrO9x377l1b1qVfoibgqPpiBZsSLV1BSELUNy+XJ48cUUQjffDEe3XFKsA5ouqDvvPHjmGTj88DR4vfPOlXuPSpo5M41fDB6czsgaNizvirqecqf7cMvCujwJNtkk3Ya0XF6rDBHpi7d5iKxZs/bLv1+/bE4z7t177ckCbbV8efoiP/bYNDnf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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xf117080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(x_axis, test_scores[:,:], 'b-')\n",
    "plt.xlabel( 'log(C)' )                                                                                                      \n",
    "plt.ylabel( 'accuracy' )\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 6.5 核化SVM模型训练以及最优解寻找"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import SVC\n",
    "# 定义优化参数字典\n",
    "tuned_parameters_ksvc ={'C':[0.001,0.005,0.01,0.05,0.1,0.5,1,5,10,20,30,100], 'gamma': [100,50,10,5,1,0.5,0.3,0.1,0.05,0.03,0.01,0.001,0.0001]}\n",
    "ksvc =SVC(tol=1e-6,kernel='rbf',class_weight=\"balanced\", random_state=20)\n",
    "grid_ksvc=GridSearchCV(ksvc,tuned_parameters_ksvc)\n",
    "# 训练数据\n",
    "grid_ksvc.fit(train_x,train_y)\n",
    "ksvc_predict_test =grid_ksvc.predict(test_x)\n",
    "ksvc_predict_train =grid_ksvc.predict(train_x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('best params for kernal svm: ', {'C': 0.5, 'gamma': 10})\n",
      "('best score for kernal svm: ', 0.70078125)\n",
      "confusion matrix:\n",
      "[[1100    1    1]\n",
      " [ 359    2    1]\n",
      " [ 135    1    0]]\n",
      "regression report:\n",
      "             precision    recall  f1-score   support\n",
      "\n",
      "          0    0.69009   0.99819   0.81602      1102\n",
      "          1    0.50000   0.00552   0.01093       362\n",
      "          2    0.00000   0.00000   0.00000       136\n",
      "\n",
      "avg / total    0.58842   0.68875   0.56451      1600\n",
      "\n",
      "accuracy score for train data: 0.99813\n",
      "accuracy score for test data: 0.68875\n"
     ]
    }
   ],
   "source": [
    "print(\"best params for kernal svm: \",grid_ksvc.best_params_)\n",
    "print(\"best score for kernal svm: \",grid_ksvc.best_score_)\n",
    "print(\"confusion matrix:\")\n",
    "print(metrics.confusion_matrix(test_y, ksvc_predict_test) )\n",
    "print(\"regression report:\")\n",
    "print(metrics.classification_report(test_y, ksvc_predict_test, digits=5))\n",
    "print(\"accuracy score for train data: {0:.5f}\".format(metrics.accuracy_score(train_y, ksvc_predict_train)))\n",
    "print(\"accuracy score for test data: {0:.5f}\".format(metrics.accuracy_score(test_y, ksvc_predict_test)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "跑了很久训练集上面惊人的 0.998 测试集上面0.68 过拟合了。 实在是跑的太久了，没时间重新再跑一次了。。。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fit_grid_point_RBF(C, gamma, x_train, y_train, x_val, y_val):\n",
    "    \n",
    "    # 在训练集是那个利用SVC训练\n",
    "    SVC3 =  SVC( C = C, kernel='rbf', class_weight=\"balanced\",gamma = gamma)\n",
    "    SVC3 = SVC3.fit(x_train, y_train)\n",
    "    \n",
    "    # 在校验集上返回accuracy\n",
    "    accuracy = SVC3.score(x_val, y_val)\n",
    "    print \"gamma:\",gamma,\"  accuracy\",accuracy\n",
    "    return accuracy"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "调整 gamma 值找到最优解"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "gamma: 0.1   accuracy 0.561875\n",
      "gamma: 0.5   accuracy 0.600625\n",
      "gamma: 1   accuracy 0.62\n",
      "gamma: 5   accuracy 0.688125\n",
      "gamma: 10   accuracy 0.68875\n",
      "gamma: 15   accuracy 0.689375\n",
      "gamma: 20   accuracy 0.689375\n",
      "gamma: 25   accuracy 0.689375\n",
      "gamma: 50   accuracy 0.689375\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEKCAYAAADjDHn2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Xd8VFX6+PHPk04NJfSAAQlNkBBCESxYUCyAItJkFRZBRcQtusKu7YdlURcriKtfC1IFZCEiCqhYFgEJJJQEgYBAAghID5D+/P6YITuEwAyQyWSS5/165ZW5955773OZMM+cc+49R1QVY4wx5nwCfB2AMcaY0s+ShTHGGLcsWRhjjHHLkoUxxhi3LFkYY4xxy5KFMcYYtyxZGGOMccuShTHGGLcsWRhjjHEryNcBFJeIiAiNiorydRjGGONX1qxZ87uq1nJXrswki6ioKBISEnwdhjHG+BUR2elJOWuGMsYY45YlC2OMMW5ZsjDGGONWmemzKEpOTg7p6elkZmb6OhRjilVYWBiRkZEEBwf7OhRTTpTpZJGenk6VKlWIiopCRHwdjjHFQlU5ePAg6enpNG7c2NfhmHKiTDdDZWZmUrNmTUsUpkwREWrWrGk1ZlOiynSyACxRmDLJ/q5NSSvTzVDGmLJFVTmVk0dGVi4ns5y/s/M4kZXLiexcx+8sx3JOXr6vwy0xdcMrMKhTI6+ew5JFCenUqRNZWVkcOnSIU6dO0aBBAwDmz5/PhTx5Pm/ePFq1akWLFi0u6PxXX301EydOJCYm5oL2O+1f//oX9evXZ9CgQRe1f0m45557ePnll2nSpAm5ubmEhobSpk0blixZQu3atc8q/8ILL/Dxxx8TFBTExIkTuemmm84qc//995OUlER+fj4tW7bko48+olKlSmRmZjJ48GCSkpKoVasWn376KY0aNWL//v3069eP1atXM3z4cN54442CY61evZqhQ4eSmZlJz549ef311wH4+9//zsKFCxER6taty5QpU6hbty7Tp0/n2WefpXXr1syfP997/3CXID9fyc7LJys3n+zcfLJy88jOzXesy3H8znbZ9r9y+YXK5ZGZk8/J7FwysvI4mZV7RiIoeJ2di6rn8ZWXClhMw2qWLMqKVatWAfDxxx+TkJDAxIkTL+o48+bNIyAg4IKTxaXIyclh6tSprF27tsTOeTEeeughXn31VSZPngxAlSpVSEpKKrLs+vXrmTdvHikpKaSlpdGjRw82b95MQMCZLbNvv/02VatWBWD06NFMnjyZxx9/nPfee4+6deuSmprKtGnTGDt2LNOnT6dixYq8+OKLJCYmkpqaelZ8H330EXFxcdxyyy0sXbqU7t27M2bMGF566SUAXnvtNV544QUmTpzIvffeS506dS76b8UT2w9kMHXlTk5l5xV8iGcVfIjnFXzYF3y4F9qWk3cBn9znERQghAYFUCk0iMqhQVQMDaRSSBC1qoRyWc2KjnUhQVQODaRiaBCVQoOoFBLo/B1EpVDna+f6iiFBhASV+Vb2EmXJohT48ssvGTduHFlZWURHR/Phhx9SqVIlnnjiCb744guCgoK49dZbueOOO1i0aBHLly/nueeeu+BayWnTpk3j5ZdfRlXp1atXwQfVv//9byZMmED9+vVp2rQplStX5o033mDp0qV06NCBwMBAAFauXMmIESOoXLkyXbt2ZenSpSQlJbFt2zaGDBlCRkYGAQEBvPPOO3Tq1Imvv/6aF198kZo1a7Ju3Tr69+9Ps2bNePvtt8nKyiI+Pp6oqCgGDx5MeHg4KSkp7Nq1i48++ogPPviAVatW0bVrVz744AMARowYwdq1azl16hT9+/fnmWeeAaBbt2488MAD5OXluf03WLBgAQMHDiQkJITLL7+cRo0asWbNGjp06HBGudOJIj8/n8zMzIK+ggULFjB+/HgA+vXrx5/+9CeAgn+TTZs2nXGctLQ0MjMzC47/hz/8gfnz59O9e/eCcwCcPHmyxPojjmfmMPTj1ew9mkm1CsGEBgcQEhhASFAgoUEBhAQFUDk0iNBKjtchgQGEBgU6XgcFFJRxvHasDw0McDnOOcoHOl67bgsMKCdVAD9WbpLF//s8mZQ9x4r1mK3qV+XZnldc0jH279/P+PHj+eabbwq+lb755psMGzaMRYsWkZycjIhw5MgRqlWrxm233Ubfvn258847L+p86enpPPXUUyQkJBAeHs5NN93EwoULadu2LePHj2ft2rVUqlSJbt260bFjRwCWL19O+/btC44xdOhQpkyZQseOHXn88ccL1terV4+lS5cSFhbGL7/8wv33319Qo1q3bh2bNm0iPDycqKgoRo4cyerVq5kwYQITJ07kX//6FwBHjx5l2bJl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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x3c8c3518>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#需要调优的参数\n",
    "C_s = [0.5]# logspace(a,b,N)把10的a次方到10的b次方区间分成N份 \n",
    "gamma_s = [0.1,0.5,1,5,10,15,20,25,50]  \n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "    for j, gamma in enumerate(gamma_s):\n",
    "        tmp = fit_grid_point_RBF(oneC, gamma, train_x, train_y, test_x, test_y)\n",
    "        accuracy_s.append(tmp)\n",
    "        \n",
    "accuracy_s1 =np.array(accuracy_s).reshape(len(gamma_s),len(C_s))\n",
    "x_axis = np.log10(gamma_s)\n",
    "for j, gamma in enumerate(C_s):\n",
    "    plt.plot(x_axis, np.array(accuracy_s1[:,j]), label = ' Test - log(gamma)' + str(np.log10(C_s)))\n",
    "\n",
    "plt.legend()\n",
    "plt.xlabel( 'log(gamma)' )                                                                                                      \n",
    "plt.ylabel( 'accuracy' )\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 6.6 模型评估"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [],
   "source": [
    "ksvc_new = SVC( C = 0.5, kernel='rbf', class_weight=\"balanced\",gamma = 20,tol=1e-6,random_state =20)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "ksvc_new.fit(train_x,train_y)\n",
    "ksvc_new_predict_test =ksvc_new.predict(test_x)\n",
    "ksvc_new_predict_train =ksvc_new.predict(train_x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('best params for kernal svm: ', {'C': 0.5, 'gamma': 10})\n",
      "('best score for kernal svm: ', 0.70078125)\n",
      "confusion matrix:\n",
      "[[1101    1    0]\n",
      " [ 360    2    0]\n",
      " [ 135    1    0]]\n",
      "regression report:\n",
      "             precision    recall  f1-score   support\n",
      "\n",
      "          0    0.68985   0.99909   0.81616      1102\n",
      "          1    0.50000   0.00552   0.01093       362\n",
      "          2    0.00000   0.00000   0.00000       136\n",
      "\n",
      "avg / total    0.58826   0.68937   0.56460      1600\n",
      "\n",
      "accuracy score for train data: 0.99813\n",
      "accuracy score for test data: 0.68937\n"
     ]
    }
   ],
   "source": [
    "print(\"best params for kernal svm: \",grid_ksvc.best_params_)\n",
    "print(\"best score for kernal svm: \",grid_ksvc.best_score_)\n",
    "print(\"confusion matrix:\")\n",
    "print(metrics.confusion_matrix(test_y, ksvc_new_predict_test) )\n",
    "print(\"regression report:\")\n",
    "print(metrics.classification_report(test_y, ksvc_new_predict_test, digits=5))\n",
    "print(\"accuracy score for train data: {0:.5f}\".format(metrics.accuracy_score(train_y, ksvc_new_predict_train)))\n",
    "print(\"accuracy score for test data: {0:.5f}\".format(metrics.accuracy_score(test_y, ksvc_new_predict_test)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7. 利用模型预测目标值，并进行输出"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "模型选用核化RBF"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [],
   "source": [
    "predict_y =ksvc_new.predict(new_x_test)\n",
    "sub = pd.DataFrame()\n",
    "sub[\"id\"] = list_test\n",
    "sub[\"interest_level\"] = predict_y\n",
    "sub[\"interest_level\"] = sub[\"interest_level\"].map({0: 'low', 1: 'medium', 2: 'high'})\n",
    "sub.to_csv('predictInterestLevel.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
